我在动作栏上有几个纯色的小图标(以及一个塑造了Photoshop的形状),按下时需要有不同的颜色。
不是将state_selected作为另一个图标(在不同颜色的photoshop中制作),我可以通过在XML中指定用另一种颜色填充相同的drawable吗?这是否需要我以某种方式定义复合可绘制(位图+颜色)?感谢
答案 0 :(得分:0)
如果您使用的是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并调用
drawable.setColorFilter(getResources().getColor(R.color.desired_tint), PorterDuff.Mode.SRC_IN)
只要按下视图。这可能不是最好的主意。