Android使Dialog全屏显示状态栏

时间:2016-02-10 00:35:42

标签: android dialog

我想创建一个全屏但没有隐藏状态栏的对话框。

如果使用样式Theme_Light_NoTitleBar_Fullscreen,则对话框占据整个屏幕。

如果使用样式Theme_Material_Light_NoActionBar_TranslucentDecor,它似乎有效,但对话框的顶部实际上变得透明。我可以通过查询状态栏高度并在我的对话框布局中添加顶部填充来使其更好。这个解决方案似乎工作正常,但如果我将动画附加到它上面它不起作用。

我很困惑为什么Google会让对话框变得如此复杂,如果我正确地在这里制作一个全屏对话框?

5 个答案:

答案 0 :(得分:9)

只需使用 THEME_BLACK_NoTitleBar 即可 为我工作!!!

答案 1 :(得分:2)

可能为时已晚,但为了遇到同样问题的其他人:

    dialog = new dialog(context,android.R.style.Theme_Translucent_NoTitleBar);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

    dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,
                                 WindowManager.LayoutParams.MATCH_PARENT);

答案 2 :(得分:1)

我从博客中找到了一个snipplet,经过几次尝试后我发现我必须在构造函数中使用Theme_Black_NoTitleBar_Fullscreen,并在onCreate期间使用snipplet。现在我的对话框是全屏的,并显示状态栏。

public YourCustomDiag(Activity act){
    //step 1, required. to stretch the dialog to full screen
    super(act, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.custom_dialog_layout);
    KeepStatusBar();
}

//step 2, required
private void KeepStatusBar(){    
    WindowManager.LayoutParams attrs = getWindow().getAttributes();
    attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
    getWindow().setAttributes(attrs);
}

this is the source where i found the snipplet

答案 3 :(得分:1)

使用 android.R.style.Theme_Black_NoTitleBar

AlertDialog.Builder builder = new AlertDialog.Builder(context,
                   android.R.style.Theme_Black_NoTitleBar);

Example screen

答案 4 :(得分:1)

您可以使用

android.R.style.Theme_Black_NoTitleBar_Fullscreen

AlertDialog.Builder builder = new AlertDialog.Builder(Objects.requireNonNull(getActivity()),
            android.R.style.Theme_Black_NoTitleBar_Fullscreen);

这将使用primaryDarkColor作为状态栏。