3 回答
TA贡献1824条经验 获得超5个赞
更改状态栏颜色仅适用于棒棒糖上方的 android
1.您可以通过此行以编程方式更改状态栏颜色:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.your_color));
}
2.您可以使用平滑过渡动画来做到这一点:
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.或者您可以将其添加到 values/styles.xml 文件中的主题样式中。item colorPrimaryDark 将用于您的应用程序状态栏颜色
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
但是要将状态栏图标颜色更改为深色,您可以使用 SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 标志,该标志可用于 M 以上的 android
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>
TA贡献1828条经验 获得超3个赞
在onCreate()
方法中使用它:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
这适用于 API 23+。
TA贡献1804条经验 获得超3个赞
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);
}
添加回答
举报