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

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   夜行过客  阅读(2317)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2017-12-05 android.animation(6) - AnimatorSet
2016-12-05 新浪微博客户端(53)-记录用户最近点击表情
2016-12-05 android-解决EditText的inputType为Password时, 字体不一致的问题
点击右上角即可分享
微信分享提示