Dialog全屏,去掉状态栏
2019-04-08 本文已影响0人
苏墨白梦觉泪满青衫湿
Dialog与PopupWindow都是可以弹窗的控件,有一些区别,本人喜欢用Dialog 可是用的时候发现有一些问题需要解决和总结一下,所以写了这个总结,方便下次自己使用。
Dialog全屏时隐藏状态栏
用上述方法时,发现设置为全屏时上方一直有状态栏,,,所以我又上网查了一下,总结了之后现在发出来:
新建一个类 继承 Dialog
public class omgDialogP extends Dialog {
public OBDDialogP(@NonNull Context context) {
super(context , R.style.kdialog);
setCancelable(false);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
applyCompat();
}
private void applyCompat() {
if (Build.VERSION.SDK_INT < 19) {
return;
}
// 隐藏状态栏不占位
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
}
里面的Style 文件:
<!--Dialog 样式 四周没有边框 加 全屏时不会有隐藏标题栏-->
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
调用的时候
omgDialogP dialog = new omgDialogP(this);
View viewDialog = LayoutInflater.from(this).inflate(R.layout.dialog_perfoemance_other, null);
dialog.setContentView(viewDialog);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
setPromptWin(dialog);
自定义方法:
private void setPromptWin(omgDialog dia) {
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = dia.getWindow().getAttributes();
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
dia.getWindow().setAttributes(lp);
}
划重点!!!
隐藏状态栏主要是getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);