Android中自定義Dialog樣式
阿新 • • 發佈:2018-12-16
public class MyMiddleDialog extends Dialog { private Context context; public MyMiddleDialog(Context context) { super(context); } public MyMiddleDialog(Context context, int themeResId) { super(context, themeResId); this.context = context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.register_y_d, null); this.setContentView(layout); } }
dialog樣式
<style name="MyMiddleDialogStyle" parent="@android:style/Theme.Holo.Light.Dialog"> <!-- 視窗背景色 --> <item name="android:windowBackground">@android:color/transparent</item> <!--是否有覆蓋--> <item name="android:windowContentOverlay">@null</item> <!-- 浮於Activity之上 --> <item name="android:windowIsFloating">true</item> <!-- 邊框 --> <item name="android:windowFrame">@null</item> <!-- Dialog以外的區域模糊效果 --> <item name="android:backgroundDimEnabled">true</item> <!-- 無標題 --> <item name="android:windowNoTitle">true</item> <!-- 半透明 --> <item name="android:windowIsTranslucent">true</item> <!--進出動畫--> <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> </style>
呼叫dialog程式碼
//設定樣式 MyMiddleDialog myMiddleDialog = new MyMiddleDialog(getActivity(), R.style.MyMiddleDialogStyle); Window window = myMiddleDialog.getWindow(); //設定邊框距離 window.getDecorView().setPadding(0, 0, 0, 0); //設定dialog位置 window.setGravity(Gravity.RIGHT|Gravity.TOP); WindowManager.LayoutParams lp = window.getAttributes(); //設定寬高 lp.width = WindowManager.LayoutParams.WRAP_CONTENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; window.setAttributes(lp); //設定點選Dialog外部任意區域關閉Dialog myMiddleDialog.setCanceledOnTouchOutside(true); myMiddleDialog.show();