【问题标题】:Remove FLAG_TRANSLUCENT_STATUS at runtime在运行时删除 FLAG_TRANSLUCENT_STATUS
【发布时间】:2017-03-23 12:23:12
【问题描述】:

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

    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 删除该标志?

【问题讨论】:

    标签: java android flags android-windowmanager android-window


    【解决方案1】:
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
    

    FLAG_TRANSLUCENT_STATUSgot deprecated 有以下建议:

    改用带有半透明颜色的Window#setStatusBarColor(int)

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

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

    【讨论】:

    • FLAG_TRANSLUCENT_STATUS 代码已弃用,您有任何更新的答案
    • FLAG_TRANSLUCENT_STATUS 代码已弃用,我也在寻找相同的代码
    猜你喜欢
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    • 2011-09-13
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多