在运行时移除 FLAG_TRANSLUCENT_STATUS

Mes*_*Mes 6 java flags android android-windowmanager android-window

我有MainActivity很多Fragments 并且在一个特定的片段中我想在系统栏后面绘制,所以我在运行时应用以下标志:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }
Run Code Online (Sandbox Code Playgroud)

我现在想要的是当用户退出Fragment并输入另一个以删除该标志时,状态栏后面没有内容。我尝试将 null 作为参数传递给setFlags()方法,但这给出了错误。我已经搜索remove()unSet()方法,但不存在。那么我应该如何删除另一个标志Fragment

azi*_*ian 8

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
Run Code Online (Sandbox Code Playgroud)

FLAG_TRANSLUCENT_STATUS 已弃用以下建议:

使用Window#setStatusBarColor(int)半透明颜色代替。

声明了一个带有十六进制值的颜色#6F000000,然后在代码中:

getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.my_color))
Run Code Online (Sandbox Code Playgroud)

  • FLAG_TRANSLUCENT_STATUS 代码已弃用,您有任何更新的答案吗 (2认同)