1. 程式人生 > >Android Dialog-Dialog無法充滿橫屏且下方有間隔

Android Dialog-Dialog無法充滿橫屏且下方有間隔

自定義一個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);