VectorDrawable图像在android.support.v7.preference.Preference中显示不正确

时间:2020-05-03 21:44:15

标签: android svg android-vectordrawable

Android Studio 3.6

VectorDrawable(res/drawable/ic_phone_bw.xml

<vector android:height="24dp" android:viewportHeight="294.8"
    android:viewportWidth="294.8" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#FFFFFF" android:pathData="M147.4,147.4m-141.73,0a141.73,141.73 0,1 1,283.46 0a141.73,141.73 0,1 1,-283.46 0"/>
    <path android:fillColor="#FF000000" android:pathData="M147.4,147.4m-131.99,0a131.99,131.99 0,1 1,263.98 0a131.99,131.99 0,1 1,-263.98 0"/>
    <path android:fillColor="#FFFFFF" android:pathData="M200.62,248.9H94.19c-1.39,0 -2.52,-1.13 -2.52,-2.52V49.48c0,-1.39 1.13,-2.52 2.52,-2.52h106.43c1.39,0 2.52,1.13 2.52,2.52v196.9C203.13,247.77 202.01,248.9 200.62,248.9z"/>
    <path android:fillColor="#FF000000" android:pathData="M102.7,75.7h89.39v149.58h-89.39z"/>
</vector>

我想像这样在“首选项”中使用它:

但结果如下:

enter image description here

为什么图标显示不正确(黑点)?

1 个答案:

答案 0 :(得分:0)

作为参考,这是与VectorDrawable等效的SVG。

<svg width="240px" height="240px" viewBox="0 0 294.8 294.8">
  <path fill="#FFFFFF" d="M147.4,147.4m-141.73,0a141.73,141.73 0,1 1,283.46 0a141.73,141.73 0,1 1,-283.46 0"/>
  <path fill="#000000" d="M147.4,147.4m-131.99,0a131.99,131.99 0,1 1,263.98 0a131.99,131.99 0,1 1,-263.98 0"/>
  <path fill="#FFFFFF" d="M200.62,248.9H94.19c-1.39,0 -2.52,-1.13 -2.52,-2.52V49.48c0,-1.39 1.13,-2.52 2.52,-2.52h106.43c1.39,0 2.52,1.13 2.52,2.52v196.9C203.13,247.77 202.01,248.9 200.62,248.9z"/>
  <path fill="#000000" d="M102.7,75.7h89.39v149.58h-89.39z"/>
</svg>

请注意,此图标中有两条黑色和两条白色路径。


这里可能发生了几件事:

  1. 白色的第三条路径中有一些Android不喜欢(无法正确解析)的东西,导致该路径无法正确绘制。这不太可能。

  2. 我注意到您的屏幕截图中的图标带有色调。它们是灰色而不是黑色。我的猜测是,您正在以将所有路径设置为灰色(包括白色)的方式来设置图标的颜色或颜色。

假设#2是正确的,有两种解决方案:

  1. 更改为图标重新着色的方式
  2. 重画此图标,使其仅包含一个或两个黑色路径。现在,白色的部分应该只是黑色部分中的孔。然后为图标着色,将不再有任何白色部分被重新着色。
相关问题