显示对话框片段时使状态栏正常显示

问题描述

我在屏幕顶部有一个 DialogFragment:

enter image description here

我想像往常一样看到状态栏,没有覆盖(同时在屏幕的其余部分保留它) 这就是我在 AppCompatDialog 中尝试的,但没有成功:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Window window = getwindow();
    if (window != null) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYstem_BAR_BACKGROUNDS);
        }
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
    }
}

有什么想法吗?

解决方法

通常,当您显示一个对话框时,它的背景中有一个阴影。我建议不要将 API 窗口与 clearFlags/addFlags 一起使用,因为它们有时会有点混乱,而是直接删除此阴影。

假设你的对话框变量是dialog,你只需在它上面调用这个方法并且你已经移除了阴影:

dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...