小编Mat*_*out的帖子

使用ColorStateList色调值使ImageView/ImageButton膨胀时出错

使用ImageView/ ImageButton(AppCompatImageView/ AppCompatImageButton),其与一个风格属性的结合android:tint,这使得使用的ColorStateList资源工作在> = API 21细,但将引发InflateException对API <21.

首先,我甚至不知道AppCompatImageView / (Button)着色是否支持ColourStateListxml资源作为android:tint值,我似乎无法找到明确的答案.我可以在S/O上找到的建议建议实现TintableImageView等,但是这些答案已经过时了,而且从appcompat实现的来源看来,这应该是一个功能.

澄清这绝对是个问题.删除android:tint属性或将其设置为单个颜色资源有效.

另外要澄清一下,我知道这是可以通过编程实现的.我试图让它在xml中向后兼容.

最小的例子

activity_foo.xml

<android.support.v7.widget.AppCompatImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_caret_up"
                style="@style/IconButton.Primary"

/>
Run Code Online (Sandbox Code Playgroud)

styles.xml

<style name="IconButton.Primary">
    <item name="android:tint">@color/link_button_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)

link_button_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:color="@color/btnLinkPressedTextColor"
      android:state_selected="true" />
  <item android:color="@color/btnLinkPressedTextColor"
      android:state_pressed="true" />
  <item android:color="@color/btnLinkTextColor" />

</selector>
Run Code Online (Sandbox Code Playgroud)

android tint android-appcompat imageview android-4.4-kitkat

5
推荐指数
1
解决办法
674
查看次数