Android Activity作为dialog遇见的问题

为了让我们的activity 以dialog 的方式出现 ,我们仅仅写了布局页面还是不ok的 我们需要代码设置宽高 ,适配等等问题 ,例如下面的 lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 改为match 状态栏就成了黑色 至今我还没找到答案 。。。

  • 第一种写法 比较简单

        Window win = this.getWindow();
        win.getDecorView().setPadding(0, 0, 0, 0);
        WindowManager.LayoutParams lp = win.getAttributes();
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
        lp.gravity = Gravity.TOP;
        win.setAttributes(lp);

        setContentView(R.layout.report_alert);

    
  • 第二种写法 需要适配 但是这样的写法并不好 在4.4.0的手机上发现 状态栏 变成了白色

    
  getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
            window.setNavigationBarColor(Color.TRANSPARENT);
        }else{
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
        }

        setContentView(R.layout.report_alert);

你可能感兴趣的:(Android Activity作为dialog遇见的问题)