【问题标题】:Dynamically setting & removing TRANSLUCENT Status bar flag动态设置和删除 TRANSLUCENT 状态栏标志
【发布时间】:2014-12-31 11:41:26
【问题描述】:

我正在开发在 Android Lollipop 上运行的应用程序。我使用以下代码设置了状态栏颜色。

首先我设置了这个标志WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 然后...

getWindow().setStatusBarColor(Color.RED);

但是我的应用程序需要动态设置FLAG_TRANSLUCENT_STATUS,但是当我设置此标志时,它可以完美地显示透明状态栏。稍后当我想给状态栏上色时,WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 标志不起作用

【问题讨论】:

    标签: android android-5.0-lollipop material-design


    【解决方案1】:

    使用以下命令添加或删除FLAG_TRANSLUCENT_STATUS 标志:

    window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    

    【讨论】:

      【解决方案2】:

      当您的应用在 Lollipop 上运行并且您的活动主题继承自 Theme.AppCompat.Light.DarkActionBar 时,默认启用状态栏着色。

      AFAIK FLAG_TRANSLUCENT_STATUS 只需要为 Android KitKat 上的状态栏着色。

      所以在你的情况下,你可以简单地使用

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
              getWindow().setStatusBarColor(yourColor);
      }
      

      在您的活动中使用您喜欢的任何颜色(当然包括黑色;))

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-28
        • 2018-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-06
        • 2011-02-19
        相关资源
        最近更新 更多