Как сделать нижнюю границу в прорисовываемом 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>