Я создал объект 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>
Результат выглядит следующим образом:
Проблема в том, что восклицательный знак прозрачный, а хотелось бы сделать его непрозрачным. Я пытался изменить атрибут path android:fillColor = "@android:color/black
но это не дало никакого эффекта. Любая идея, как я могу это сделать?
Зеленая область и восклицательный знак на самом деле созданы двумя отдельными путями, которые объединены в один оператор 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>
@VanessaF Вы правы: из первого оператора пути можно удалить больше. То, что я изначально опубликовал, создало многоугольник и два восклицательных знака - один из первого пути и один из второго. Я удалил символы с конца первого, чтобы была создана только одна метка.
@VanessaF Здесь — хорошее описание языка векторных рисунков.
Спасибо за ваш ответ, Cheticamp. Но вообще говоря, когда я создаю векторный актив через Android Studio, как я могу узнать, где разделить пути, чтобы векторный актив был непрозрачным, не изучая этот очень сложный векторный язык?
@VanessaF Это будет зависеть от вектора рисования. В этом чертеже я искал команды «переместить» (M
) в конце пути и удалял из каждой команды перемещения до конца, пока не остался только многоугольник. Затем я вставил то, что удалил, как новый путь и изменил цвета. Это было методом проб и ошибок и не очень научно. Для более сложного рисования я бы рассмотрел возможность импорта рисунка в редактор SVG, внесения изменений и импорта SVG обратно в Android Studio. Сейчас могут быть доступны векторные графические редакторы, но я не искал их какое-то время.
Спасибо 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"/>
. Где это должно быть разделено