Gha*_*den 32 android android-5.0-lollipop
我正在尝试在Android v21中设置状态栏文本颜色,但我没有看到它的API方法.这是我到目前为止的背景
MyActivity.java> onCreate:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(getResources().getColor(R.color.white));
}
Run Code Online (Sandbox Code Playgroud)
显然白色背景上的白色文字将无法正常工作.我正在寻找类似的东西
window.setStatusBarTextColor(getResources().getColor(R.color.orange));
Run Code Online (Sandbox Code Playgroud)
Sun*_*ita 66
您无法通过明确指定任何颜色来设置状态栏文本颜色
但您可以尝试下面的API 23中添加的替代方案,
您可以通过两种方式使用"android:windowLightStatusBar"属性
Run Code Online (Sandbox Code Playgroud)<style name="statusBarStyle" parent="@android:style/Theme.DeviceDefault.Light"> <item name="android:statusBarColor">@color/status_bar_color</item> <item name="android:windowLightStatusBar">false</item> </style>
您可以在下面的链接中查看上面的api - https://developer.android.com/reference/android/R.attr.html#windowLightStatusBar
Map*_*psy 22
这是Gandalf458答案的Java实现.
/** Changes the System Bar Theme. */
@RequiresApi(api = Build.VERSION_CODES.M)
public static final void setSystemBarTheme(final Activity pActivity, final boolean pIsDark) {
// Fetch the current flags.
final int lFlags = pActivity.getWindow().getDecorView().getSystemUiVisibility();
// Update the SystemUiVisibility dependening on whether we want a Light or Dark theme.
pActivity.getWindow().getDecorView().setSystemUiVisibility(pIsDark ? (lFlags & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) : (lFlags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR));
}
Run Code Online (Sandbox Code Playgroud)
Gan*_*458 10
您也可以在运行时执行此操作.以下是Mono.Android使用标志SystemUiVisibility的示例.你必须做一些按位操作来改变标志.必须将您的应用程序设置为目标API 23或更高版本才能使用此标志进行编译.
//Android 6.0 introduced the ability to set a light colored text on the status bar
//MyActivity needs to be changed to your activity
if(Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M)
{
int newUiVisibility = (int)MyActivity.Window.DecorView.SystemUiVisibility;
if(state == StatusBarState.Light)
{
//Dark Text to show up on your light status bar
newUiVisibility |= (int)Android.Views.SystemUiFlags.LightStatusBar;
}
else if(state == StatusBarState.Dark)
{
//Light Text to show up on your dark status bar
newUiVisibility &= ~(int)Android.Views.SystemUiFlags.LightStatusBar;
}
MyActivity.Window.DecorView.SystemUiVisibility = (Android.Views.StatusBarVisibility)newUiVisibility;
}
public enum StatusBarState
{
Light,
Dark
}
Run Code Online (Sandbox Code Playgroud)
对于 Android 6.0 及以上您可以查看Sunita 的回答。
安卓 5.0
我们只能更改状态栏颜色而不是状态栏文本颜色。
没有像这样的方法
setStatusBarTextColor(getResources().getColor(R.color.orange));
Run Code Online (Sandbox Code Playgroud)
简而言之,它在 Android 5.0 上是不可能的。检查这个答案
适用于安卓 6.0+
您可以使用它来将状态栏内容颜色更改为在黑色背景上亮起,如下图所示。
View decorView = this.getWindow().getDecorView();
int systemUiVisibilityFlags = decorView.getSystemUiVisibility();
systemUiVisibilityFlags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
decorView.setSystemUiVisibility(systemUiVisibilityFlags);
Run Code Online (Sandbox Code Playgroud)
默认情况下,它是黑色的,因此将其保留为浅色背景。
| 归档时间: |
|
| 查看次数: |
56616 次 |
| 最近记录: |