Android 单矢量资源多色调

Android 单矢量资源多色调,android,android-resources,Android,Android Resources,我想用矢量版本替换项目中的所有.PNG资源(图标)。 为了尽可能地提高效率,我希望避免由于不同状态(如同一图标的“活动”和“非活动”版本)而导致图像重复 之前,我为每个版本使用了单独的PNG文件:不透明的“活动”和略微透明的“非活动” 所以问题是,是否可以创建一些引用单个向量(最好)图像但对其应用不同颜色/色调的XML?或者至少不同的alpha值就足够了 顺便说一句,我的minSDK版本是19,如果有关系的话 更新\u 01: 我想我需要更详细地解释一下。 矢量资源按预期工作(compat-li

我想用矢量版本替换项目中的所有.PNG资源(图标)。 为了尽可能地提高效率,我希望避免由于不同状态(如同一图标的“活动”和“非活动”版本)而导致图像重复

之前,我为每个版本使用了单独的PNG文件:不透明的“活动”和略微透明的“非活动”

所以问题是,是否可以创建一些引用单个向量(最好)图像但对其应用不同颜色/色调的XML?或者至少不同的alpha值就足够了

顺便说一句,我的minSDK版本是19,如果有关系的话

更新\u 01: 我想我需要更详细地解释一下。 矢量资源按预期工作(compat-lib已做好所有准备,以便根据需要绘制矢量)

主要问题是在单独的XML中使用一个向量图标和多个具有不同颜色/字母的引用。并在需要的地方(工具栏、按钮、状态等)使用这些XML

更新\u 02: 也许,以身作则会更好

我有一个向量绘制的“主页”图标,它看起来像这样:

<vector
    android:height="24dp"
    android:viewportHeight="792.0"
    android:viewportWidth="792.0"
    android:width="24dp"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <path
        android:fillColor="#FF000000"
        android:pathData="..."/>
</vector>

我想要的是使用相同的XML向量drawable,但对于“活动”和“非活动”状态,使用不同的色调,例如,在页面适配器的选项卡中

我现在要做的是复制这个XML并更改它的“android:fillColor”值

在所有使用它的地方(在代码中)对它进行变异是一种方法,但在我看来不是很好。也许还有别的办法?类似这样的内容(伪):


然后在任何地方都使用这个“home\u icon\u ref.xml”作为可绘制的源代码


希望这一次能让我的问题更清楚。

您可以在java代码中以编程方式修改,而不是在单独的XML资源中使用。遵循不确定这是否正是您所需要的(这已经快2年了),但您可以在
图像视图的XML中使用
android:tint

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:src="@drawable/vector_drawable"
    android:tint="@android:color/black"
    android:contentDescription="@string/description"
/>

我目前使用的是
minsdkversion21
,但它似乎可以在早期版本中工作。

您还可以将
样式
@android:color/black

DrawableCompat#setTintList
API static{AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);}一起使用。我想我应该添加关于这个主题的更多细节。查看我的更新。抱歉,尽管您进行了更新,但我仍然看不到您的主要问题…我在问题中添加了一个示例。如果我理解正确,我将不得不在所有片段和活动中使用此图像的每个视图中添加代码中的变异。不是很方便。
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentStart="true"
    android:src="@drawable/vector_drawable"
    android:tint="@android:color/black"
    android:contentDescription="@string/description"
/>