首页 文章

如何在android中更改状态栏文本颜色?

提问于
浏览
1

在下面的图像中,

status bar background is: 黑色

而且, status bar text color is: 白色

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

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

2 回答

  • 1

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

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

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

  • 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
    }
    

相关问题