Android make Dialog全屏显示状态栏

s4chpxco  于 2023-06-20  发布在  Android
关注(0)|答案(7)|浏览(244)

我想做一个全屏但不隐藏状态栏的对话框。
如果使用样式Theme_Light_NoTitleBar_Fullscreen,则对话框占据整个屏幕。
如果使用样式Theme_Material_Light_NoActionBar_TranslucentDecor,它似乎工作,但对话框的顶部实际上是透明的。我可以通过查询状态栏的高度和添加顶部填充到我的对话框布局来使它更好。这个解决方案看起来工作正常,只是如果我附加了动画,它就不工作了。
我很困惑为什么谷歌使对话框这么复杂的使用,如果我做正确的全屏对话框在这里?

gkn4icbw

gkn4icbw1#

只要使用THEME_BLACK_NoTitleBar就可以了!!!

fsi0uk1n

fsi0uk1n2#

这可能已经太晚了,但为了其他有同样问题的人:

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

lf3rwulv3#

使用android.R.style.Theme_Black_NoTitleBar

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

Example screen

bxfogqkk

bxfogqkk4#

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

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

yizd12fk

yizd12fk5#

你可以用

android.R.style.Theme_Black_NoTitleBar_Fullscreen

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

这将为状态栏使用primaryDarkColor。

zdwk9cvp

zdwk9cvp6#

只需用途:

Dialog dialog = new Dialog(ctx, android.R.style.Theme_Black_NoTitleBar);

这将显示状态栏和剩余的对话框将全屏

tyg4sfes

tyg4sfes7#

只需使用您自己的应用程序主题样式。它会沿着。例如:Dialog dialog = new Dialog(context,R.style.YOUR_THEME_STYLE); themes/style

相关问题