Android Studio现在在21+上支持矢量资产,并将在编译时为低版本生成png。我有一个矢量资产(来自材质图标),我想改变填充颜色。这适用于21+,但生成的png不改变颜色。有办法做到这一点吗?

<vector android:height="48dp" android:viewportHeight="24.0"
android:viewportWidth="24.0" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@color/primary" android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>


当前回答

如果向量没有使用fillColor显示单独设置的颜色,那么它们可能被设置为默认的小部件参数。

尝试在activity_main.xml中添加app:itemIconTint="@color/lime"来为小部件图标设置默认颜色类型。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:itemIconTint="@color/lime"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

可记录的

其他回答

将这个库添加到Gradle中,以启用旧android设备中的颜色向量可绘制。

compile 'com.android.support:palette-v7:26.0.0-alpha1'

和重新同步gradle。我认为这会解决问题。

Android工作室现在支持矢量前棒棒糖。不进行PNG转换。你仍然可以改变你的填充颜色,它会工作。

在ImageView中,使用

 app:srcCompat="@drawable/ic_more_vert_24dp"

在gradle文件中,

 // Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
   }  
 }  

 compile 'com.android.support:design:23.4.0'

如果你想改变项目矢量图标的颜色,你可以使用这个:

android:iconTint="@color/color"

如果向量没有使用fillColor显示单独设置的颜色,那么它们可能被设置为默认的小部件参数。

尝试在activity_main.xml中添加app:itemIconTint="@color/lime"来为小部件图标设置默认颜色类型。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:itemIconTint="@color/lime"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

可记录的

不要直接编辑矢量资产。如果你在ImageButton中使用矢量绘图,只需在android:tint中选择你的颜色。

<ImageButton
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:id="@+id/button"
        android:src="@drawable/ic_more_vert_24dp"
        android:tint="@color/primary" />