美文网首页
Dialog全屏,去掉状态栏

Dialog全屏,去掉状态栏

作者: 苏墨白梦觉泪满青衫湿 | 来源:发表于2019-04-08 16:47 被阅读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);

    相关文章

      网友评论

          本文标题:Dialog全屏,去掉状态栏

          本文链接:https://www.haomeiwen.com/subject/bgrpiqtx.html