Выберите кнопку Android и нажмите
Я пытаюсь сделать кнопку с государственным прессом и выбрать, я уже сделал то же самое с вкладками, и это работает, но я не знаю, почему здесь не работает. Я сделал это вот так:
button_sel.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="@color/azulado"
android:endColor="@color/azulBrillante"
android:angle="270" />
<corners android:radius="@dimen/corner_radius" />
<stroke android:width="2px"
android:color="@color/blanco" />
</shape>
button_unsel.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="@color/botonesD"
android:endColor="@color/botones"
android:angle="270" />
<corners android:radius="@dimen/corner_radius" />
<stroke android:width="2px"
android:color="@color/blanco" />
</shape>
И селектор, button.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_sel"
android:state_selected="true"
android:state_pressed="true"/>
<item android:drawable="@drawable/button_unsel"
android:state_selected="false"
android:state_pressed="false"/>
</selector>
И здесь я называю drawable в качестве фона:
<style name="button">
<item name="android:background">@drawable/button</item>
<item name="android:textSize">@dimen/text_size</item>
<item name="android:padding">@dimen/padding_button</item>
<item name="android:textColor">@color/blanco</item>
</style>
Спасибо!!!!
Ответы
Ответ 1
Первый элемент в вашем селекторе используется, только когда кнопка нажата и выбрана. Если вы хотите использовать button_sel
когда ваша кнопка нажата или выбрана, вы должны сделать что-то вроде этого:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_sel" android:state_selected="true" />
<item android:drawable="@drawable/button_sel" android:state_pressed="true" />
<item android:drawable="@drawable/button_unsel" />
</selector>
Элементы оцениваются сверху вниз, последний по умолчанию. Хотя я не уверен, что state_selected имеет смысл для кнопок.
Ответ 2
Может использовать фигуру внутри.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape....>
</item>
<item android:state_selected="true" >
<shape....>
</item>
<item android:state_pressed="true" android:state_selected="true" >
<shape...>
</item>
</selector>
Для образца:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" >
<shape
android:shape="rectangle">
<gradient android:startColor="@color/md_amber_300"
android:endColor="@color/md_amber_50"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:width="2px"
android:color="@color/primaryColorDark_orange" />
</shape>
</item>
<item android:state_pressed="true" >
<shape
android:shape="rectangle">
<gradient android:startColor="@color/md_amber_300"
android:endColor="@color/md_amber_50"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:width="2px"
android:color="@color/primaryColorDark_orange" />
</shape>
</item>
<item android:state_pressed="true" android:state_selected="true" >
<shape
android:shape="rectangle">
<gradient android:startColor="@color/md_teal_500"
android:endColor="@color/md_blue_400"
android:angle="270" />
<corners android:radius="@dimen/fab_margin" />
<stroke android:width="2px"
android:color="@color/md_amber_A400" />
</shape>
</item>
</selector>