Как сделать актив Android Vector для ImageView непрозрачным

Я создал объект Vector с помощью студии Android, и у меня есть следующий код:

<vector android:height="24dp" android:tint="#4CAC78"
    android:viewportHeight="24" android:viewportWidth="24"
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="@android:color/white" android:pathData="M23,12l-2.44,-2.78 0.34,-3.68 -3.61,-0.82 -1.89,-3.18L12,3 8.6,1.54 6.71,4.72l-3.61,0.81 0.34,3.68L1,12l2.44,2.78 -0.34,3.69 3.61,0.82 1.89,3.18L12,21l3.4,1.46 1.89,-3.18 3.61,-0.82 -0.34,-3.68L23,12zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z"/>
    
</vector>

Результат выглядит следующим образом:

enter image description here

Проблема в том, что восклицательный знак прозрачный, а хотелось бы сделать его непрозрачным. Я пытался изменить атрибут path android:fillColor="@android:color/blackно это не дало никакого эффекта. Любая идея, как я могу это сделать?

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
0
23
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Зеленая область и восклицательный знак на самом деле созданы двумя отдельными путями, которые объединены в один оператор path в векторе, который можно нарисовать. Чтобы раскрасить их отдельно, вам нужно разделить их на отдельные операторы пути:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24"
    android:viewportHeight="24">
    <path
        android:fillColor="#4CAC78"
        android:pathData="M23,12l-2.44,-2.78 0.34,-3.68 -3.61,-0.82 -1.89,-3.18L12,3 8.6,1.54 6.71,4.72l-3.61,0.81 0.34,3.68L1,12l2.44,2.78 -0.34,3.69 3.61,0.82 1.89,3.18L12,21l3.4,1.46 1.89,-3.18 3.61,-0.82 -0.34,-3.68L23,12z" />
    <path
        android:fillColor="@android:color/black"
        android:pathData="M13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z" />
</vector>

enter image description here

Спасибо Cheticamp за ваш ответ. Он отлично работает, и я принял его и проголосовал за него. Однако у меня есть вопрос относительно разделения одного пути. Как вы узнали, где разбить путь? В векторном ресурсе, созданном студией Android, у вас есть путь <path android:fillColor="@android:color/white" android:pathData="M23,12l-2.44,-2.78 0.34,-3.68 -3.61,-0.82 -1.89,-3.18L12,3 8.6,1.54 6.71,4.72l-3.61,0.81 0.34,3.68L1,12l2.44,2.78 -0.34,3.69 3.61,0.82 1.89,3.18L12,21l3.4,1.46 1.89,-3.18 3.61,-0.82 -0.34,-3.68L23,12zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z"/>. Где это должно быть разделено

VanessaF 10.04.2022 09:51

@VanessaF Вы правы: из первого оператора пути можно удалить больше. То, что я изначально опубликовал, создало многоугольник и два восклицательных знака - один из первого пути и один из второго. Я удалил символы с конца первого, чтобы была создана только одна метка.

Cheticamp 10.04.2022 15:06

@VanessaF Здесь — хорошее описание языка векторных рисунков.

Cheticamp 10.04.2022 15:08

Спасибо за ваш ответ, Cheticamp. Но вообще говоря, когда я создаю векторный актив через Android Studio, как я могу узнать, где разделить пути, чтобы векторный актив был непрозрачным, не изучая этот очень сложный векторный язык?

VanessaF 10.04.2022 15:58

@VanessaF Это будет зависеть от вектора рисования. В этом чертеже я искал команды «переместить» (M) в конце пути и удалял из каждой команды перемещения до конца, пока не остался только многоугольник. Затем я вставил то, что удалил, как новый путь и изменил цвета. Это было методом проб и ошибок и не очень научно. Для более сложного рисования я бы рассмотрел возможность импорта рисунка в редактор SVG, внесения изменений и импорта SVG обратно в Android Studio. Сейчас могут быть доступны векторные графические редакторы, но я не искал их какое-то время.

Cheticamp 10.04.2022 16:06

Другие вопросы по теме