Рисование пользовательской овальной и прямоугольной формы XML в качестве фона - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу создать пользовательский фон кнопки, который будет выглядеть следующим образом:

enter image description here

Я не могу использовать атрибут corners в прямоугольнике shapeпоскольку он закругляет только угол, а середина левой стороны прямая, или когда я устанавливаю слишком большое значение для этого атрибута, он выглядит следующим образом.
enter image description here

Надеюсьчто я могу объединить 2 фигуры (овал и прямоугольник), как в здесь , но всякий раз, когда я пытаюсь повернуть этот список слоев, он не выглядит как требуемая форма.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Попробуй так:

             <Button
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:background="@drawable/test"
                android:text="Button"
                android:textColor="@color/black"
              />

и @drawable/test будут выглядеть так:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:left="0dp"
        android:right="-100dp"
        android:top="-30dp"
        android:bottom="-30dp">

        <shape android:shape="oval">
            <solid
                android:color="@android:color/white" />
        </shape>
    </item>


</layer-list>

Примечание: Я знаю, что это не лучшее решение. Но пока это может помочь. и если вы хотите увеличить ширину кнопки, то измените приведенные ниже атрибуты в соответствии с вашими потребностями.

android:top="-30dp"
android:bottom="-30dp"

и result будет выглядеть так:

enter image description here

0 голосов
/ 15 ноября 2018

Используйте приведенный ниже код в качестве нарисованного файла и установите в качестве фона кнопки.Для пышных краев вы можете увеличить радиус уменьшения снизу.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke
        android:width="3dp"
        android:color="#ffffff" />
    <corners android:radius="10dp" />
    <gradient
        android:angle="270"
        android:endColor="#2b74d2"
        android:startColor="#2b74d2"
        android:type="linear" />
</shape>
...