java - 在运行时移除 FLAG_TRANSLUCENT_STATUS

标签 java android flags android-windowmanager android-window

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

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

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

最佳答案

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

FLAG_TRANSLUCENT_STATUS got deprecated有以下建议:

Use Window#setStatusBarColor(int) with a half-translucent color instead.

用十六进制值声明颜色 #6F000000,然后在代码中:

getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.my_color))

关于java - 在运行时移除 FLAG_TRANSLUCENT_STATUS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42975945/

相关文章:

java - 使用 ints 作为 prop.setProperty()

java - 我如何将两个字符串数组放入 ListView 中具有多个对象类型的数组列表中

android - 应用程序未在 2.1 市场中显示

Android,Intent.FLAG_ACTIVITY_CLEAR_TOP 好像不行?

c++ - "uFlags &= ~CHN_PANNING"命令有什么作用?

java - Maven "JAVA_HOME should point to a JDK not a JRE"

java - 我可以使用 lambda 表达式通过 CDI 的策略模式动态获取 ejb 吗?

Android获取所有联系人重复的名字

java - Android 打开 Activity 并关闭上一个 Activity

java - 学习元素排序的算法(最好在 Java 中)