Android Dialog-Dialog無法充滿橫屏且下方有間隔
阿新 • • 發佈:2018-12-05
自定義一個Dialog,寫完佈局後執行,發現Dialog無法充滿螢幕,就像下邊這樣:
程式碼大致如下:
Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dialog_layout); Window dialogWindow = dialog.getWindow(); dialogWindow.setGravity(Gravity.BOTTOM); dialogWindow.getDecorView().setPadding(0, 0, 0, 0); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.width = WindowManager.LayoutParams.FILL_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; dialogWindow.setAttributes(lp); dialog.show();
分析
這個問題其實是因為背景的.9圖四周 邊距太寬的原因,和寬度設定無關,事實上是填滿了的,只是四周是透明的而已。
開啟原始碼中父類Dialog的style和theme,發現background屬性:
切換到圖片所在目錄:
發現它是一張.9圖片
解決方法1:
自定義style,繼承Theme.Dialog,重寫背景屬性
<style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">false</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/white</item> <item name="android:backgroundDimEnabled">true</item> </style>
然後程式碼引用該style:
Dialog dialog = new Dialog(this,R.style.dialog);
解決方法2:
在自定義dialog中手動用程式碼設定
dialogWindow.setBackgroundDrawableResource(android.R.color.white);