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

问题描述 投票:0回答:1

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

选项1(使用多个png):

[但在几乎2020年之前不是一个好的解决方案

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

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

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

android android-drawable android-vectordrawable
1个回答
0
投票

尝试一下:

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

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

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

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

build.gradle

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

示例:

defaultConfig {
      vectorDrawables.useSupportLibrary = true
}

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

© www.soinside.com 2019 - 2024. All rights reserved.