Android создает радиус для закругленных углов только для небольших фигур слева

#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-макета. Так как без назначения отступа, с правого конца или без указания ширины последний элемент списка слоев всегда будет располагаться поверх другого. Вы также можете использовать правильное ключевое слово вместо заполнения, которое, по моему мнению, немного лучше, и я обновил то же самое.