Как сделать нижнюю границу в прорисовываемом XML-селекторе?

Я пытаюсь создать нарисованную форму с различными состояниями для моей кнопки. Итак, я написал это:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" android:color="@android:color/black" >
    <shape android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE_pressed" />
        <stroke
            android:width="1dp"
            android:color="@color/ORANGE" />
        <corners android:radius="4dp" />
    </shape>
</item>
<item android:state_focused="true" android:color="@android:color/black" >
    <shape android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE_focused" />
        <stroke
            android:width="1dp"
            android:color="@color/ORANGE" />
        <corners android:radius="4dp" />
    </shape>
</item>
<item android:color="@android:color/black" >
    <shape android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE" />
        <stroke
            android:width="1dp"
            android:color="@color/NEGATIVE" />
        <corners android:radius="4dp" />
    </shape>
</item>
</selector>

Тогда в моей кнопке я использую его как android:background="@drawable/btn_negative_selector"

Тем не менее, я хочу нарисовать нижнюю границу этой фигуры, например, 3 dp и другого цвета, но я не могу понять, как это сделать. Я пытался искать, но не нашел ничего подходящего для селектора. Любые предложения, пожалуйста?

1 ответ

Решение

Сначала я разделяю формы, чтобы ими было легче управлять.

Это ваш btn_negative_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@xml/rectangle_button_pressed" android:state_pressed="true"></item>
    <item android:drawable="@xml/rectangle_button_focused" android:state_focused="true"></item>
    <item android:drawable="@xml/rectangle_button" ></item>
</selector>

создайте папку с именем 'xml' в вашем res и сохраните в ней следующие фигуры:

1) rectangle_button_pressed:

    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE_pressed" />
        <stroke
            android:width="1dp"
            android:color="@color/ORANGE" />
        <corners android:radius="4dp" />
    </shape>

2) rectangle_button_focused:

    <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
        <solid android:color="@color/NEGATIVE_focused" />
        <stroke
            android:width="1dp"
            android:color="@color/ORANGE" />
        <corners android:radius="4dp" />
    </shape>

3) Этот один rectangle_button.xml будет иметь границу в нижней части, определяя форму, используя <layer-list>. первый <item> нижний слой и последний <item> это верхний слой.

<?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="@color/gray"/>
            <corners android:radius="4dp"/>
        </shape>
    </item>
    <item android:bottom="3dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/orange" />
            <corners android:radius="4dp"/>
        </shape>

    </item>
</layer-list>
Другие вопросы по тегам