如何更改android中的状态栏文字颜色?

时间:2016-11-20 14:28:02

标签: android statusbar

在下图中,

状态栏背景为: 黑色

和,状态栏文字颜色为: 白色

status bar with background color as black and text color as white

那么,我们如何更改状态栏文本颜色? ..你可以看到,状态栏的内容现在以白色显示,那么我们如何将其更改为不同的颜色?

2 个答案:

答案 0 :(得分:2)

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

但你可以尝试使用" android:windowLightStatusBar"这是在API 23中添加的,

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

答案 1 :(得分:0)

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

注意:该代码在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
}