代码之家  ›  专栏  ›  技术社区  ›  MCMatan

在黑白之间切换状态栏文本颜色

  •  0
  • MCMatan  · 技术社区  · 7 年前

    应用程序以状态栏颜色开始:

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

    进入模式弹出屏幕时,状态栏变为后退,并显示白色文本:

    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
    

    状态栏背景会改变,但不会改变文本。 不确定是什么 系统可见性 价值应该是。

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

    系统_UI _标志_布局_全屏, 系统_UI _标志_布局_稳定

    还是不走运。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Daksh Gargas    7 年前

    我不使用Kotlin编写代码,但下面的代码片段可以实现这一点

    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

        2
  •  0
  •   Thalatta    7 年前

    你需要设置 decorView 是的 systemUiVisibility 打开以下标志 View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR .

    就你而言

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