【发布时间】:2016-11-20 14:28:02
【问题描述】:
【问题讨论】:
-
顺便说一句,我认为这在棒棒糖或棉花糖之前的 API 中是不可能的
-
那么棒棒糖或棉花糖有解决方案吗??
-
你试图找到什么?因为我发现了这个stackoverflow.com/questions/30464234/…
【问题讨论】:
您不能通过明确指定任何颜色来设置状态栏文本颜色。
但您可以尝试使用 API 23 中添加的“android:windowLightStatusBar”,
您可以在此处找到更多详细信息: https://developer.android.com/reference/android/R.attr.html#windowLightStatusBar
【讨论】:
您可以使用以下代码以编程方式设置状态栏颜色。
注意:代码是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
}
【讨论】: