【问题标题】:Toggle status bar text color between black and white在黑白之间切换状态栏文本颜色
【发布时间】:2019-03-14 04:27:17
【问题描述】:

应用以状态栏颜色开始:

背景为白色,文字为黑色。

进入模态弹窗时,状态栏变回,白色文字:

window?.setStatusBarColor(Color.BLACK);
activity?.window?.decorView?.systemUiVisibility = SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR

有效!

接下来,在模态弹出屏幕关闭时,我希望状态栏恢复正常:

背景白色和黑色文字

没有运气。

我尝试了什么? 这个:

window?.setStatusBarColor(Color.BLACK); // This really does work
activity?.window?.decorView?.systemUiVisibility = // Not sure what should be the value

状态栏背景确实发生了变化,但文本没有变化。 不确定 systemUiVisibility 值应该是什么。

阅读https://developer.android.com/reference/android/view/View 但是没找到合适的,试过了

SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN, SYSTEM_UI_FLAG_LAYOUT_STABLE

还是没有运气。

【问题讨论】:

    标签: android statusbar


    【解决方案1】:

    您需要设置 decorViewsystemUiVisibility 以启用以下标志 View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

    你的情况

    activity?.window?.decorView?.systemUiVisibility = activity?.window?.decorView?.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
    

    【讨论】:

      【解决方案2】:

      我不会在 Kotlin 中编写代码,但是下面的代码 sn-p 可以解决问题

      Window window = activity.getWindow();
      
      // clear FLAG_TRANSLUCENT_STATUS flag:
      window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
      
      // add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
      window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
      
      // finally change the color
      window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color));
      

      它也应该自动改变文本颜色。

      Reference

      Source

      【讨论】:

      • 没用。文本仍然保持白色...并且此代码不处理文本颜色更改,仅处理背景颜色...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-03
      • 2021-06-18
      相关资源
      最近更新 更多