Mat*_*out 5 android tint android-appcompat imageview android-4.4-kitkat
使用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)
看起来 AppCompat 可绘制着色仅适用于 < API 21 上的操作栏和“某些小部件”,但适用于 API 21+ 上的所有可绘制。
当您设置这些属性时,AppCompat 会自动将它们的值传播到 API 21+ 上的框架属性。这会自动为状态栏和概述(最近)任务条目着色。
在较旧的平台上,AppCompat 会尽可能模拟颜色主题。目前,这仅限于为操作栏和一些小部件着色。
来源: https: //android-developers.googleblog.com/2014/10/appcompat-v21-material-design-for-pre.html
这里的答案也有更多细节:/sf/answers/2040892801/
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |