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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM