VectorDrawable:在ImageView中用作源时更改onPress上的颜色

时间:2017-01-13 18:17:27

标签: android vector

我在用作按钮的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:

EDITED

vector_image_a.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    ...>
    <path
        ...
        android:fillColor="@color/colour_A" />
</vector>

vector_image_b.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    ...>
    <path
        ...
        android:fillColor="@color/colour_B" />
</vector>

selector.xml

<?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个文件结束:

  • 一个用于具有颜色A
  • 的图像
  • 一个用于具有颜色B
  • 的图像
  • 一个选择器

所以我想知道是否可以直接在矢量图像颜色上使用选择器( android:fillColor属性)。 例如:

vector_image.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    ...>
    <path
        ...
        android:fillColor="drawable/selector_colour" />
</vector>

selector_colour.xml

<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>

我试过但显然它不起作用?

1 个答案:

答案 0 :(得分:0)

我在post找到了我的问题的答案。 我所要做的就是使用矢量图像作为我的ImageView的源,然后使用选择器( selector_colour.xml )作为色调。