如何解决Android SDK 23中ColorStateList中的主题属性颜色参考不起作用
我遇到有关Android SDK 23(测试设备:具有Android 6.0的Huawei Honor 6(H60-L04))的问题。
我遵循Google的建议(1和2),并通过主题属性引用颜色。 但是colorStateLists中用于设置Alpha值的颜色无法正确解析。
这就是我要做的
int textColor = getColorFromThemeAttr(context,R.attr.textColorDisappeared);
someTextView.setTextColor(textColor);
public static int getColorFromThemeAttr(Context context,int colorResId) {
TypedValue typedValue = new TypedValue();
TypedArray typedArray = context.obtainStyledAttributes(typedValue.data,new int[] {colorResId});
int color = typedArray.getColor(0,Color.CYAN);
typedArray.recycle();
return color;
}
res / values / themes / themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.App.Setup" parent="Theme.AppCompat.DayNight.NoActionBar">
[...]
<item name="textColorDisappeared">@color/color_on_surface_alpha_30</item>
<item name="colorOnSurface">@color/black</item>
[...]
</style>
</resources>
res / color / color_on_surface_alpha_30.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorOnSurface" android:alpha="0.3" />
</selector>
最后是res / values / colors.xml
[...]
<color name="black">#000000</color>
[...]
在其他测试设备上,它可以正常工作,但是在该设备上,颜色解析为红色(#FF0000),该颜色在应用程序中的任何地方都没有使用。有人对此有想法吗?还是只是SDK中的错误?
顺便说一句::我将android:alpha vlaue设置为还引用了主题属性
android:alpha="?android:disabledAlpha"
与此相关的应用程序因ErrorLog崩溃
android.content.res.Resources$NotFoundException: File res/color/tentacle_color_on_surface_alpha_30.xml from color state list resource ID #0x7f0600da
at android.content.res.Resources.loadColorStateList(Resources.java:2910)
at android.content.res.HwResources.loadColorStateList(HwResources.java:743)
at android.content.res.TypedArray.getColor(TypedArray.java:460)
将值设置为固定的浮点数(例如0.3)即可。因此,看来该SDK模具没有android:disabledAlpha的值。
Android Styling: Prefer Theme Attributes Developing Themes with Style (Android Dev Summit '19)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。