美文网首页
Android Activity作为dialog遇见的问题

Android Activity作为dialog遇见的问题

作者: sirai | 来源:发表于2017-05-12 22:48 被阅读825次

    为了让我们的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);
    
    
        <style name="Transparent" >
            <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">true</item>
            <item name="android:windowContentOverlay">@null</item>
            <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
            <item name="android:backgroundDimEnabled">true</item>
    
        </style>
    
    • 第二种写法 需要适配 但是这样的写法并不好 在4.4.0的手机上发现 状态栏 变成了白色
    
        <style name="Transparent" parent="@android:style/Theme.Translucent.NoTitleBar">
            <item name="android:windowIsTranslucent">true</item>
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:backgroundDimEnabled">true</item>
            <item name="android:windowContentOverlay">@null</item>
            <item name="windowNoTitle">true</item>
    
        </style>
    
      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遇见的问题

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