Android 低于L的ImageView色调无法引用主题属性
我最近在我的应用程序中添加了不同的主题,因此需要为每个主题设置不同颜色的图标Android 低于L的ImageView色调无法引用主题属性,android,android-layout,android-theme,android-vectordrawable,Android,Android Layout,Android Theme,Android Vectordrawable,我最近在我的应用程序中添加了不同的主题,因此需要为每个主题设置不同颜色的图标 <ImageView ... android:src="@drawable/ic_info" android:tint="?colorControlNormal" 及 但这也没用 着色支持文档非常模糊,结合使用VectorDrawables和引用主题颜色,我找不到任何信息 当前正在尝试使用: <android.support.v7.widget.AppCom
<ImageView
...
android:src="@drawable/ic_info"
android:tint="?colorControlNormal"
及
但这也没用
着色支持文档非常模糊,结合使用VectorDrawables和引用主题颜色,我找不到任何信息
当前正在尝试使用:
<android.support.v7.widget.AppCompatImageView
...
android:tint="?colorControlNormal"
android:src="@drawable/icon"/>
其结果是:
Caused by: android.view.InflateException: Binary XML file line #39: Error inflating class android.support.v7.widget.AppCompatImageView
at android.view.LayoutInflater.createView(LayoutInflater.java:621)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
...
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
...
Caused by: java.lang.NumberFormatException: Invalid int: "res/color/abc_secondary_text_material_light.xml"
at java.lang.Integer.invalidInt(Integer.java:137)
at java.lang.Integer.parse(Integer.java:374)
at java.lang.Integer.parseInt(Integer.java:365)
at com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:122)
at android.content.res.TypedArray.getInt(TypedArray.java:255)
at android.widget.ImageView.<init>(ImageView.java:155)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:72)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:68)
原因:android.view.InflateException:二进制XML文件行#39:对类android.support.v7.widget.AppCompatImageView进行膨胀时出错
位于android.view.LayoutInflater.createView(LayoutInflater.java:621)
位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
位于android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
在android.view.LayoutInflater.inflate(LayoutInflater.java:492)
在android.view.LayoutInflater.inflate(LayoutInflater.java:397)
...
原因:java.lang.reflect.InvocationTargetException
位于java.lang.reflect.Constructor.constructNative(本机方法)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
...
原因:java.lang.NumberFormatException:无效int:“res/color/abc\u secondary\u text\u material\u light.xml”
位于java.lang.Integer.InvalidIt(Integer.java:137)
位于java.lang.Integer.parse(Integer.java:374)
在java.lang.Integer.parseInt(Integer.java:365)处
位于com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:122)
位于android.content.res.TypedArray.getInt(TypedArray.java:255)
在android.widget.ImageView上(ImageView.java:155)
位于android.support.v7.widget.AppCompatImageView。(AppCompatImageView.java:72)
位于android.support.v7.widget.AppCompatImageView。(AppCompatImageView.java:68)
尝试使用:
<android.support.v7.widget.AppCompatImageView
android:id="@+id/my_appcompat_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_image" // change to ur own.
android:tint="#636363" // also change this part to our own case
/>
这项针对API<19的工作终于找到了问题所在 通过引用主题颜色
?colorControlNormal
您隐式地使用了一个ColorStateList(abc_secondary_text_material_light.xml),它在L下面不受支持。
除非您使用的是
,并且还使用了支持库app:tint
属性中的tint属性。
因此,正确的色调属性最终解决了这个问题。我认为ImageView会自动被AppCompatImageView取代。问题是,我需要为色调引用一个主题属性/颜色,当使用原始问题中提供的解决方案添加的示例时,这仍然会导致崩溃
Caused by: android.view.InflateException: Binary XML file line #39: Error inflating class android.support.v7.widget.AppCompatImageView
at android.view.LayoutInflater.createView(LayoutInflater.java:621)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:756)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:759)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
...
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
...
Caused by: java.lang.NumberFormatException: Invalid int: "res/color/abc_secondary_text_material_light.xml"
at java.lang.Integer.invalidInt(Integer.java:137)
at java.lang.Integer.parse(Integer.java:374)
at java.lang.Integer.parseInt(Integer.java:365)
at com.android.internal.util.XmlUtils.convertValueToInt(XmlUtils.java:122)
at android.content.res.TypedArray.getInt(TypedArray.java:255)
at android.widget.ImageView.<init>(ImageView.java:155)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:72)
at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:68)
<android.support.v7.widget.AppCompatImageView
android:id="@+id/my_appcompat_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_image" // change to ur own.
android:tint="#636363" // also change this part to our own case
/>