Как сделать актив 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>

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

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

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

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>

Спасибо 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

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