如何通过应用程序的矢量drawable(xml)覆盖库的png drawable?

时间:2019-12-13 22:44:22

标签: android android-drawable android-vectordrawable

我在Android项目中使用的是库。库在ic_sample.png(hdpi,xhdpi,xxhdpi,xxhdpi)目录中有drawable/。我想用我自己的图标替换该图标。

选项1(使用多个png):

在几乎2020年有效但不是一个干净的解决方案

  • 获取我自己图标的png文件并将其重命名为ic_sample.png
  • 将其放在所有可绘制的目录drawable/ +(hdpi,xhdpi,xxhdpi,xxhdpi)下。

选项2(使用单个Vector可绘制):

这就是问题 -通过矢量可绘制xml覆盖图书馆的图标。

1 个答案:

答案 0 :(得分:0)

  

尝试一下:

构建库项目时,VectorDrawable为每种密度创建PNG文件,并将原始VectorDrawable放置在 drawable-anydpi-v21 中。

如果将VectorDrawable放在应用程序的 drawable-anydpi-v21 中,则它将覆盖库项目中的drawable。这似乎是一个错误,应该创建一个新问题(如果尚不存在)。

在构建过程中,库中的矢量可绘制对象放置在 drawable-anydpi-v21 文件夹中。

由于这将在所有v21 +设备上都具有先例,因此,如果要覆盖库资源,则需要将可绘制应用移动到同一文件夹。

  

build.gradle

对于 v21之前的版本,您需要在库和应用程序上设置vectorDrawables.useSupportLibrary = true,然后将可绘制的矢量放置在drawable文件夹中。

  

示例:

defaultConfig {
      vectorDrawables.useSupportLibrary = true
}

注意::这不会替换库中生成的PNG文件。您还需要将它们添加到您的应用中,以覆盖它们。