Android: 是否可以更改 Android Lollipop 中状态栏中图标的颜色
Android: Is it possible to change the color of icons in status bar in Android Lollipop
我有以下改变状态栏颜色的函数:
public static void colorStatusBar(Window window, Context context, boolean transparent) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
if(transparent){
window.setStatusBarColor(context.getResources().getColor(android.R.color.transparent));
}else{
window.setStatusBarColor(context.getResources().getColor(R.color.timeline_unselected));
}
}
}
我的问题是,它改变了状态栏的颜色,但没有改变图标的颜色,这使得它们几乎不可见。
示例:http://postimg.org/image/ah01hzxdz/
是否也可以更改图标颜色?
是的,可以将其更改为灰色(无自定义颜色),但这仅适用于 API 23 及更高版本,您只需将其添加到 values-v23/styles.xml进入你的主题宣言。
<item name="android:windowLightStatusBar">true</item>
自从 Lollipop 之后就没有了。从 Android 5.0 开始,指南说:
通知图标必须全白。
即使不是,系统也只会考虑图标的 Alpha 通道,将它们渲染为白色
在 Lollipop 上使用彩色图标的唯一方法是将您的 targetSdkVersion 值降低到 <21。
如果您仍然决定想要彩色图标,您可以使用新的 v4 支持库中的 DrawableCompat.setTint 方法。
我有以下改变状态栏颜色的函数:
public static void colorStatusBar(Window window, Context context, boolean transparent) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
if(transparent){
window.setStatusBarColor(context.getResources().getColor(android.R.color.transparent));
}else{
window.setStatusBarColor(context.getResources().getColor(R.color.timeline_unselected));
}
}
}
我的问题是,它改变了状态栏的颜色,但没有改变图标的颜色,这使得它们几乎不可见。 示例:http://postimg.org/image/ah01hzxdz/ 是否也可以更改图标颜色?
是的,可以将其更改为灰色(无自定义颜色),但这仅适用于 API 23 及更高版本,您只需将其添加到 values-v23/styles.xml进入你的主题宣言。
<item name="android:windowLightStatusBar">true</item>
自从 Lollipop 之后就没有了。从 Android 5.0 开始,指南说:
通知图标必须全白。 即使不是,系统也只会考虑图标的 Alpha 通道,将它们渲染为白色
在 Lollipop 上使用彩色图标的唯一方法是将您的 targetSdkVersion 值降低到 <21。
如果您仍然决定想要彩色图标,您可以使用新的 v4 支持库中的 DrawableCompat.setTint 方法。