Как я могу изменить цвет значка, не заполняя его изнутри?

#android #vector #colors #icons

Вопрос:

Я пытаюсь сделать так, чтобы моя иконка выглядела вот так: введите описание изображения здесь

Тем не менее, это выглядит так: введите описание изображения здесь

Это мой код:

 lt;com.google.android.material.floatingactionbutton.FloatingActionButton  style="@style/FAB"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:src="@drawable/ic_baseline_favorite_border_24"/gt;  lt;style name="FAB" parent="Widget.Design.FloatingActionButton"gt;  lt;item name="shapeAppearanceOverlay"gt;@style/FABShapelt;/itemgt;  lt;item name="android:backgroundTint"gt;@color/blacklt;/itemgt;  lt;item name="android:tint"gt;@color/yellowlt;/itemgt; lt;/stylegt;  lt;style name="FABShape" parent="ShapeAppearance.MaterialComponents.SmallComponent"gt;  lt;item name="cornerSize"gt;10%lt;/itemgt; lt;/stylegt;  

Это вектор для формы сердца (от Google):

 lt;vector xmlns:android="http://schemas.android.com/apk/res/android"  android:width="24dp"  android:height="24dp"  android:viewportWidth="24"  android:viewportHeight="24"  android:tint="?attr/colorControlNormal"gt;  lt;path  android:fillColor="@android:color/white"  android:pathData="M16.5,3c-1.74,0 -3.41,0.81 -4.5,2.09C10.91,3.81 9.24,3 7.5,3 4.42,3 2,5.42 2,8.5c0,3.78 3.4,6.86 8.55,11.54L12,21.35l1.45,-1.32C18.6,15.36 22,12.28 22,8.5 22,5.42 19.58,3 16.5,3zM12.1,18.55l-0.1,0.1 -0.1,-0.1C7.14,14.24 4,11.39 4,8.5 4,6.5 5.5,5 7.5,5c1.54,0 3.04,0.99 3.57,2.36h1.87C13.46,5.99 14.96,5 16.5,5c2,0 3.5,1.5 3.5,3.5 0,2.89 -3.14,5.74 -7.9,10.05z"/gt; lt;/vectorgt;  

Я ожидаю, что вектор будет пустой формой сердца. Но когда я наношу на него оттеночный цвет, он окрашивает его изнутри. Есть ли способ, которым я могу заставить цвет оттенка применяться только к внешней стороне формы сердца?

Ответ №1:

 lt;vector xmlns:android="http://schemas.android.com/apk/res/android"  android:width="24dp"  android:height="24dp"  android:viewportWidth="24"  android:viewportHeight="24"  android:tint="?attr/colorControlNormal"gt;  lt;path  android:fillColor="@android:color/white"  android:pathData="M16.5,3c-1.74,0 -3.41,0.81 -4.5,2.09C10.91,3.81 9.24,3 7.5,3 4.42,3 2,5.42 2,8.5c0,3.78 3.4,6.86 8.55,11.54L12,21.35l1.45,-1.32C18.6,15.36 22,12.28 22,8.5 22,5.42 19.58,3 16.5,3zM12.1,18.55l-0.1,0.1 -0.1,-0.1C7.14,14.24 4,11.39 4,8.5 4,6.5 5.5,5 7.5,5c1.54,0 3.04,0.99 3.57,2.36h1.87C13.46,5.99 14.96,5 16.5,5c2,0 3.5,1.5 3.5,3.5 0,2.89 -3.14,5.74 -7.9,10.05z"/gt;  lt;group  android:scaleX="0.95"  android:scaleY="0.95"  gt;  lt;path  android:fillColor="@android:color/black"  android:pathData="M16.5,3c-1.74,0 -3.41,0.81 -4.5,2.09C10.91,3.81 9.24,3 7.5,3 4.42,3 2,5.42 2,8.5c0,3.78 3.4,6.86 8.55,11.54L12,21.35l1.45,-1.32C18.6,15.36 22,12.28 22,8.5 22,5.42 19.58,3 16.5,3zM12.1,18.55l-0.1,0.1 -0.1,-0.1C7.14,14.24 4,11.39 4,8.5 4,6.5 5.5,5 7.5,5c1.54,0 3.04,0.99 3.57,2.36h1.87C13.46,5.99 14.96,5 16.5,5c2,0 3.5,1.5 3.5,3.5 0,2.89 -3.14,5.74 -7.9,10.05z"/gt;  lt;/groupgt;  lt;/vectorgt;  

Вы могли бы использовать тот же путь, который создает сердце, но немного уменьшите его. Если вы раскрасите его так же, как фон, он будет выглядеть как контур сердца, а не как целое сердце.