【问题标题】:android:fillType="evenOdd" is not working in api 23 - vector drawable Any alternate solution?android:fillType="evenOdd" is not working in api 23 - vector drawable 任何替代解决方案?
【发布时间】:2018-12-18 17:51:13
【问题描述】:

任何替代解决方案?

矢量可绘制代码

<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 及更高级别(当前 min 是 1) 少... (⌘F1)

此检查查找在 XML 文件中设置的属性,这些属性在 比您的应用程序所针对的最旧版本更新的版本 (使用 minSdkVersion 属性)。这不是错误;这 应用程序将简单地忽略该属性。

但是,如果该属性对外观或 您的应用程序的功能,您应该考虑找到一个 仅使用可用的替代方法来实现相同的结果 属性,然后您可以选择在 一个 layout-vNN 文件夹,将在 API NN 或更高版本上使用 可以利用较新的属性。注意:

此检查不仅适用于属性。例如,一些标签 也可以不用,比如布局中引入的新元素 在 API 21 中。问题 ID:UnusedAttribute

【问题讨论】:

标签: android xml android-vectordrawable


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您回答我的问题。您对 SDK 是正确的。但我不能真正改变我的minSDK,因为我的项目要求是minSDK 21。我找到了一个改变pathData的解决方案。我正在分享我的解决方案。
【解决方案2】:

这是我用来解决此问题的解决方案。

<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,10.9235L17.995,10.9235L17.995,22.385L6.5,22.385L6.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:strokeColor="#00000000"/>
</vector>

【讨论】:

    猜你喜欢
    • 2022-12-29
    • 1970-01-01
    • 2022-12-02
    • 2022-12-27
    • 2013-05-29
    • 2019-11-16
    • 2022-09-27
    • 1970-01-01
    • 2023-02-20
    相关资源
    最近更新 更多