使用ImageView/ ImageButton(AppCompatImageView/ AppCompatImageButton),其与一个风格属性的结合android:tint,这使得使用的ColorStateList资源工作在> = API 21细,但将引发InflateException对API <21.
首先,我甚至不知道AppCompatImageView / (Button)着色是否支持ColourStateListxml资源作为android:tint值,我似乎无法找到明确的答案.我可以在S/O上找到的建议建议实现TintableImageView等,但是这些答案已经过时了,而且从appcompat实现的来源看来,这应该是一个功能.
澄清这绝对是个问题.删除android:tint属性或将其设置为单个颜色资源有效.
另外要澄清一下,我知道这是可以通过编程实现的.我试图让它在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)
<style name="IconButton.Primary">
<item name="android:tint">@color/link_button_color</item>
</style>
Run Code Online (Sandbox Code Playgroud)
<?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)