无法处理属性 android:fillColor="@android:color/white"

Can't process attribute android:fillColor="@android:color/white"

我从 google Material.io 下载了一个图标。在集成项目后尝试构建我的项目时,我 运行 出现以下错误:Can't process attribute android:fillColor="@android:color/white"

截图如下:

打开您下载的可绘制对象并将 android:fillColor="@android:color/white" 替换为 android:fillColor="#ffffff"。在矢量绘图中,fillColor 属性必须明确设置并且不引用其他资源

您应该使用 AppCompatTheme 访问 ?attr/colorControlNormal

在应用 build.gradle 中的 android 部分添加以下行:

defaultConfig{
    vectorDrawables.useSupportLibrary = true
}

检查此以获取更多详细信息:Vector drawables overview

AS 3.3.2 / gradle-4.10.1

我遇到了同样的编译器问题:

Error: java.lang.RuntimeException: java.lang.RuntimeException: Error while processing .../main/res/drawable/ic_white_set.xml : Can't process attribute android:fillColor="@color/selector_tab_color": references to other resources are not supported by build-time PNG generation.

我打开了受控文件并收到以下 Lint 警告:

Resource references will not work correctly in images generated for this vector icon for API < 21; check generated icon to make sure it looks acceptable. Inspection info:Vector icons require API 21 or API 24 depending on used features, but when minSdkVersion is less than 21 or 24 and Android Gradle plugin 1.4 or higher is used, a vector drawable placed in the drawable folder is automatically moved to drawable-anydpi-v21 or drawable-anydpi-v24 and bitmap images are generated for different screen resolutions for backwards compatibility. However, there are some limitations to this raster image generation, and this lint check flags elements and attributes that are not fully supported. You should manually check whether the generated output is acceptable for those older devices. Issue id: VectorRaster

然后我检查了我的 build.gradle 个文件,果然,它们都有 minSdkVersion 到 16 个。

因此,作为@Bhavesh Moradiya 解决方案的替代方案,我将 minSdkVersion 设置为 21,问题就解决了。

缺点是您失去了对 SDK < 16 的设备的支持。

有两种方法可以解决这个问题。

一个快速的选择是转到有问题的 XML 文件并将 android:fillColor="@android:color/white" 更改为 android:fillColor="#FFFFFF"。错误会立即消失。但是,如果您以后有任何其他具有类似行的文件,这个问题仍然会再次出现。

这是永久解决方案:

转到您的 build.gradle 文件并添加以下内容:

defaultConfig{
    vectorDrawables.useSupportLibrary = true
}

同步,错误会立即消失。