个人经历,只供参考。
需求原本是一个半屏页面,就设置了dialog的style给activity,结果问题就来了。dialog全屏时跟布局是有一定padding的。
如图:
这就很尴尬,然后咱就开始百度一下你就知道。
无非有几种答案:
一种是设置窗口参数:
Window dialogWindow = getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
dialogWindow.setAttributes(lp);
另一种是先设置无标题主题再在代码中设置layout参数:
<style name="dialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/transparency</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
OK,全屏时成功了,然后如果你的界面中包含了输入框,调起输入框时问题就来了,不同设备会有不同的表现:
最后试出了解决方法,需要添加windowTranslucentStatus;在style中添加或代码中添加都可以
//style中添加
<item name="android:windowTranslucentStatus">true</item>
//或者代码中添加
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);