Неправильное отображение изображения VectorDrawable в android .support.v7.preference.Preference - PullRequest
0 голосов
/ 04 мая 2020

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 голосов
/ 04 мая 2020

Для справки, вот SVG-эквивалент вашего VectorDrawable.

<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. Перерисуйте этот значок так, чтобы он состоял из одного или двух черных контуров. Части, которые теперь белые, вместо этого должны быть просто дырами в черных частях. Затем вы раскрасите иконку, больше не будет белых частей, которые перекрашиваются.
...