【问题标题】:how to change the status bar text color in android?如何更改android中的状态栏文本颜色?
【发布时间】:2016-11-20 14:28:02
【问题描述】:

在下图中,

状态栏背景为:黑色

并且,状态栏文本颜色为:白色

那么,我们如何改变状态栏文本的颜色呢? ..如您所见,状态栏的内容现在显示为白色,那么我们如何将其更改为不同的颜色呢?

【问题讨论】:

  • 顺便说一句,我认为这在棒棒糖或棉花糖之前的 API 中是不可能的
  • 那么棒棒糖或棉花糖有解决方案吗??
  • 你试图找到什么?因为我发现了这个stackoverflow.com/questions/30464234/…

标签: android statusbar


【解决方案1】:

您不能通过明确指定任何颜色来设置状态栏文本颜色。

但您可以尝试使用 API 23 中添加的“android:windowLightStatusBar”,

您可以在此处找到更多详细信息: https://developer.android.com/reference/android/R.attr.html#windowLightStatusBar

【讨论】:

    【解决方案2】:

    您可以使用以下代码以编程方式设置状态栏颜色。

    注意:代码是C#,你可以把它转换成等效的java代码。 此外,状态栏文本颜色可以是白色(深色主题)或黑色(浅色主题),没有其他选项可以设置特定颜色。

    private void SetStatusBarColor(Color statusBarColor, StatusBarState state)
    {
        if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
        {
            var window = ((Activity)_context).Window;
            window.ClearFlags(WindowManagerFlags.TranslucentStatus);
            window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
            window.SetStatusBarColor(statusBarColor.ToAndroid());
            int newUiVisibility = (int)window.DecorView.SystemUiVisibility;
    
            if (state == StatusBarState.Light)
            {
                //Dark Text to show up on your light status bar
                newUiVisibility |= (int)SystemUiFlags.LightStatusBar;
            }
            else if (state == StatusBarState.Dark)
            {
                //Light Text to show up on your dark status bar
                newUiVisibility &= ~(int)SystemUiFlags.LightStatusBar;
            }
            window.DecorView.SystemUiVisibility = (StatusBarVisibility)newUiVisibility;
        }
    }
    
    public enum StatusBarState
    {
        Light,
        Dark
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-27
      • 1970-01-01
      • 2023-01-13
      • 2016-07-06
      • 2014-04-07
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      相关资源
      最近更新 更多