有其他解决方案吗?

矢量可绘制代码

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
  <path
      android:pathData="M6.5,22.4235L17.995,22.4235L17.995,10.9285L6.5,10.9285L6.5,22.4235ZM8.068,6.6785C8.068,4.3745 9.943,2.4995 12.247,2.4995C14.551,2.4995 16.426,4.3745 16.426,6.6785L16.426,9.4285L8.068,9.4285L8.068,6.6785ZM11.4971,16.6426C10.7691,16.3456 10.2551,15.6336 10.2551,14.7986C10.2551,13.6996 11.1471,12.8076 12.2471,12.8076C13.3481,12.8076 14.2391,13.6996 14.2391,14.7986C14.2391,15.6336 13.7261,16.3456 12.9971,16.6426L12.9971,19.8826L11.4971,19.8826L11.4971,16.6426ZM17.926,9.4285L17.926,6.6785C17.926,3.5475 15.378,0.9995 12.247,0.9995C9.116,0.9995 6.568,3.5475 6.568,6.6785L6.568,9.4285L5,9.4285L5,23.9235L19.495,23.9235L19.495,9.4285L17.926,9.4285Z"
      android:strokeWidth="1"
      android:fillColor="#000000"
      android:fillType="evenOdd"
      android:strokeColor="#00000000"/>
</vector>


摇篮:

 minSdkVersion = 21
    targetSdkVersion = 28
    compileSdkVersion = 28



  属性fillType仅在API级别24和更高级别(当前
  分钟是1)少...(⌘F1)
  
  此检查查找在XML文件中引入的属性集。
  版本比您的应用程序定位的最旧版本新
  (具有minSdkVersion属性)。这不是错误;的
  应用程序将简单地忽略该属性。
  
  但是,如果属性对外观或
  应用程序的功能,则应考虑查找
  仅可用时实现相同结果的替代方法
  属性,然后您可以选择在以下位置创建布局的副本
  layout-vNN文件夹,该文件夹将在API NN或更高版本上使用,
  可以利用较新的属性。注意:
  
  此检查不仅适用于属性。例如,一些标签
  也可以不使用,例如引入的布局中的新元素
  在API 21中。问题ID:UnusedAttribute
  android - android:fillType =“evenOdd”在api 23中不起作用-矢量可绘制还有替代解决方案吗?-LMLPHP


android - android:fillType =“evenOdd”在api 23中不起作用-矢量可绘制还有替代解决方案吗?-LMLPHP

最佳答案

我认为根本原因是将minSdkVersion设置为21,这不支持evenOdd(并且gradle build会忽略它)。

最简单的解决方案是:将minSdkVersion设置为24,以便使用evenOdd生成图像。

否则,您需要导出带有nonZero作为fillType的SVG。有关更多详细信息,请参考The Mystery of the Disappearing Holes — a gripping tale of using SVG in Android

10-07 12:22