#android #android-drawable #layer-list #android-shape #android-shapedrawable
Вопрос:
Я установил android:radius="20dp"
, но почему закругленные углы только слева? Красная фигура также должна иметь закругленные углы справа
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#c61b1f" />
<corners
android:radius="20dp"/>
<padding android:left="60dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#eeeeee" />
</shape>
</item>
</layer-list>
Обновленный
Я хочу достичь следующего фона для EditText
Мы можем установить width
item
значение (для первой левой фигуры), но оно доступно только с 23 API, мне нужно поддерживать 21
У меня есть решение для 23 API:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
// white shape
<shape android:shape="rectangle">
<solid android:color="#eeeeee" />
<corners android:radius="20dp"/>
</shape>
</item>
// red shape
<item android:width="60dp">
<shape android:shape="rectangle">
<solid android:color="#c61b1f" />
<corners
android:radius="20dp"/>
</shape>
</item>
</layer-list>
Комментарии:
1. красные правые углы находятся за белым братом.
2. удалите белый и проверьте еще раз
3. @MajidAli обновил вопрос
4. сделайте отдельный рисунок для красного цвета, добавьте ширину, а затем добавьте этот элемент.
5. 2-й вариант — добавить отступ к красному справа
Ответ №1:
Невидимый из-за того, что он прикрыт.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#c61b1f" />
<corners android:radius="20dp" />
<padding android:left="60dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#eeeeee" />
<corners
android:bottomRightRadius="20dp"
android:topRightRadius="20dp" />
</shape>
</item>
</layer-list>
Комментарии:
1. красная фигура также должна иметь закругленные углы справа
2. Не могли бы вы взглянуть на мои рисунки? Это так?
3. Я снова обновил вопрос, добавил пример решения, которое работает для Android 23 API
Ответ №2:
Вы можете попробовать следующее, теперь правая сторона также имеет радиус угла.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners
android:radius="20dp"/>
<solid android:color="#eeeeee" />
</shape>
</item>
<item android:right="340dp">
<shape android:shape="rectangle">
<solid android:color="#c61b1f" />
<corners
android:radius="20dp"/>
</shape>
</item>
</layer-list>
Это дает следующий результат
Комментарии:
1. @user924 Я обновил ответ в соответствии с вашим запросом
2.
340dp
кажется не очень хорошим, я не могу знать ширину белого фона, у меня может быть только фиксированный размер для красной фигуры (например, 60dp). Я протестировал этот фон с редактируемым текстом, и отображалась только белая фигура3. @user924 Я чувствую, что вам было бы лучше перейти к наложению на ваш редактируемый текст внутри XML-макета. Так как без назначения отступа, с правого конца или без указания ширины последний элемент списка слоев всегда будет располагаться поверх другого. Вы также можете использовать правильное ключевое слово вместо заполнения, которое, по моему мнению, немного лучше, и я обновил то же самое.