按下时更改纯色图标的颜色

时间:2014-12-25 22:48:54

标签: android android-actionbar android-resources android-drawable android-icons

我在动作栏上有几个纯色的小图标(以及一个塑造了Photoshop的形状),按下时需要有不同的颜色。

不是将state_selected作为另一个图标(在不同颜色的photoshop中制作),我可以通过在XML中指定用另一种颜色填充相同的drawable吗?这是否需要我以某种方式定义复合可绘制(位图+颜色)?感谢

1 个答案:

答案 0 :(得分:0)

如果您使用的是API 21(Android 5.0),则可以尝试在XML中使用android:tintandroid: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并调用

    drawable.setColorFilter(getResources().getColor(R.color.desired_tint), PorterDuff.Mode.SRC_IN)

只要按下视图。这可能不是最好的主意。