将状态栏更改为白色
Change StatusBar to White
我正在尝试将一个 activity 上的状态栏颜色更改为白色,但图标几乎没有出现:
我正在使用此代码:
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
我无法更改 ColorPrimaryDark,因为我已经为所有应用设置了一种颜色。
提前致谢。
编辑
我在评论初学者错误。这有一个非常简单的解决方案,就是在清单文件中为此 activity 设置一个主题:
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
还有我 Activity 上的这个 java 代码,正如@shahab 所说:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.setStatusBarColor(Color.TRANSPARENT);
}
在 onCreate()
方法中使用它:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
这适用于 API 23+。
更改状态栏颜色仅适用于 android above lollipop
1.you 可以通过以下行以编程方式更改状态栏颜色:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.your_color));
}
2.you可以用平滑的过渡动画做到这一点:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int startColor = getWindow().getStatusBarColor();
int endColor = ContextCompat.getColor(context, R.color.your_color);
ObjectAnimator.ofArgb(getWindow(), "statusBarColor", startColor, endColor).start();
}
3.or 您可以将其添加到 values/styles.xml 文件中的主题样式中。 item colorPrimaryDark 将用于您的应用状态栏颜色
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
但要将状态栏图标颜色更改为深色,您可以使用 SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 标志,该标志适用于 android 以上 M
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
或将其添加到您的主题样式中xml:
<item name="android:windowLightStatusBar">true</item>
Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.setStatusBarColor(Color.TRANSPARENT);
}
else {
window.setStatusBarColor(Color.WHITE);
}
我正在尝试将一个 activity 上的状态栏颜色更改为白色,但图标几乎没有出现:
我正在使用此代码:
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
我无法更改 ColorPrimaryDark,因为我已经为所有应用设置了一种颜色。
提前致谢。
编辑
我在评论初学者错误。这有一个非常简单的解决方案,就是在清单文件中为此 activity 设置一个主题:
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
还有我 Activity 上的这个 java 代码,正如@shahab 所说:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.setStatusBarColor(Color.TRANSPARENT);
}
在 onCreate()
方法中使用它:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
这适用于 API 23+。
更改状态栏颜色仅适用于 android above lollipop
1.you 可以通过以下行以编程方式更改状态栏颜色:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.your_color));
}
2.you可以用平滑的过渡动画做到这一点:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
int startColor = getWindow().getStatusBarColor();
int endColor = ContextCompat.getColor(context, R.color.your_color);
ObjectAnimator.ofArgb(getWindow(), "statusBarColor", startColor, endColor).start();
}
3.or 您可以将其添加到 values/styles.xml 文件中的主题样式中。 item colorPrimaryDark 将用于您的应用状态栏颜色
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
但要将状态栏图标颜色更改为深色,您可以使用 SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 标志,该标志适用于 android 以上 M
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
或将其添加到您的主题样式中xml:
<item name="android:windowLightStatusBar">true</item>
Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.setStatusBarColor(Color.TRANSPARENT);
}
else {
window.setStatusBarColor(Color.WHITE);
}