首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >L以下的ImageView色调不能引用主题属性

L以下的ImageView色调不能引用主题属性
EN

Stack Overflow用户
提问于 2017-09-23 09:50:46
回答 2查看 850关注 0票数 3

我最近添加了不同的主题到我的应用程序,因此需要有不同的图标颜色为每个主题。

代码语言:javascript
复制
<ImageView
        ...
        android:src="@drawable/ic_info"
        android:tint="?colorControlNormal"

但是对于低于21的API级别,这是行不通的。我正在使用vectordrawables,并且已经尝试使用

代码语言:javascript
复制
vectorDrawables.useSupportLibrary = true

代码语言:javascript
复制
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

但这也没什么用。

着色支持文档非常模糊,结合使用VectorDrawables和引用主题颜色,我找不到任何信息。

目前正在尝试使用:

代码语言:javascript
复制
<android.support.v7.widget.AppCompatImageView
    ...
    android:tint="?colorControlNormal"
    android:src="@drawable/icon"/>

其结果是:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-26 18:38:01

终于找到问题了!

通过引用主题颜色?colorControlNormal

您隐式地使用ColorStateList (abc_secondary_text_material_light.xml),除非您使用<android.support.v7.widget.AppCompatImageView>,而且还使用supported app:tint属性中的tint属性,否则在L.下面不支持它。因此,正确的tint属性最终解决了这个问题。

票数 2
EN

Stack Overflow用户

发布于 2017-09-23 09:54:08

试着使用:

代码语言:javascript
复制
<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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46378259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档