我在用作按钮的ImageView上使用xml中定义的VectorDrawable。我希望当用户点击图像时,图像的颜色会发生变化。
这是我当前的矢量xml:
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="24"
android:viewportHeight="24"
android:width="24dp"
android:height="24dp">
<path
android:pathData="<vector data>"
android:fillColor="<vector's colour>" />
</vector>
我可以使用带有两个矢量实现的选择器,一个颜色为A,另一个颜色为B:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
...>
<path
...
android:fillColor="@color/colour_A" />
</vector>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
...>
<path
...
android:fillColor="@color/colour_B" />
</vector>
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/vector_image_a" android:state_pressed="true" />
<item android:drawable="@drawable_vector_image_b" />
</selector>
但我的应用中有多个可点击图片,每当我想要仅时,用户按下图像的颜色就会改变。如果我继续执行上面的实现,对于每个可点击的图像,我将以3个文件结束:
所以我想知道是否可以直接在矢量图像颜色上使用选择器( android:fillColor属性)。 例如:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
...>
<path
...
android:fillColor="drawable/selector_colour" />
</vector>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colour_A" android:state_pressed="true" />
<item android:color="@color/colour_B" />
</selector>
我试过但显然它不起作用?
答案 0 :(得分:0)
我在post找到了我的问题的答案。 我所要做的就是使用矢量图像作为我的ImageView的源,然后使用选择器( selector_colour.xml )作为色调。