【问题标题】:Changing colour of a solid coloured icon when pressed按下时更改纯色图标的颜色
【发布时间】:2015-02-23 10:10:06
【问题描述】:
我在操作栏上有几个纯色的小图标(和 Photoshop 制作的形状),按下时需要有不同的颜色。
除了将 state_selected 设置为另一个图标(在 photoshop 中以不同的颜色制作),我可以通过在 XML 中指定用另一种颜色填充相同的可绘制对象吗?这是否需要我以某种方式定义复合可绘制对象(位图 + 颜色)?谢谢
【问题讨论】:
标签:
android
android-actionbar
android-resources
android-drawable
android-icons
【解决方案1】:
如果您使用的是 API 21 (Android 5.0),您可以尝试在 XML 中使用 android:tint 和 android:tintMode 属性。你的 android:tint 应该指向一个用 XML 定义的状态列表,在你的情况下应该是这样的:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/desired_tint" />
<item android:state_pressed="false" android:color="@color/transparent" />
</selector>
对于旧设备,我唯一想到的就是在运行时检索您的可绘制对象并调用
drawable.setColorFilter(getResources().getColor(R.color.desired_tint), PorterDuff.Mode.SRC_IN)
只要按下视图。不过,这可能不是最好的主意。