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

上一篇下一篇

猜你喜欢

热点阅读