2013-09-11 4 views
0

У меня есть кнопка, которой назначается bg с селектором, который управляет его bg drawable (показано ниже). Кажется, я не могу найти состояние, в котором элемент сохраняется после нажатия кнопки. Чтобы уточнить iam, ищем состояние, в котором текущая/последняя нажатая кнопка может быть назначена соответствующим образом.Android bg drawable state of last presed

Кто-нибудь знает, как это можно сделать?

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:constantSize="true" 
    android:dither="false" 
    android:variablePadding="false"> 
    <item android:drawable="@drawable/option_button_yellow" android:state_pressed="true"/> 
    <item android:drawable="@drawable/option_button_yellow" android:state_focused="true"/> 
    <item android:drawable="@drawable/option_button_white"/> 
</selector> 

ответ

1

Используйте ToggleButton, затем вы можете использовать state_checked в своем селекторе. Если вы хотите, чтобы он снял отметку с кнопки, если что-то еще нажата, используйте RadioGroup с ToggleButtons внутри нее (или, возможно, другие виды), вам придется управлять событиями onXXX() самостоятельно, есть example here.

0

Может быть, вы ищете что-то типа этого:

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/btn_state_highlighted" /> 
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/btn_state_highlighted"/> 
<item android:drawable="@drawable/btn_state_normal" /> 
</selector> 

где btn_state_highlighted и btn_state_normal ваши изображения для соответствующих состояний вашей кнопки.

0

Эй, ребята, поэтому я думаю, что не понял окончательный вопрос и, возможно, нашел решение самостоятельно. Я искал взаимоисключающий набор кнопок, который однажды сохранит измененное изображение bg и вернет оставшуюся часть кнопки в свое стандартное изображение bg. Я, похоже, смог это сделать, заменив кнопку радиокнобами и установив ее родительскую группу. Плюс простое изменение переносного селектора xml для размещения элемента state_checked = "true". Однако у меня возникают проблемы с тем, чтобы включить выделенный текст в пользовательский bg на радиокнопку при удалении его кнопки (установка android: button = "@ nul"). Кажется, это испортило выравнивание. Есть предположения?

макет

<RadioGroup android:id="@+id/options" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="@dimen/option_button_layout_top_margin" android:paddingBottom="@dimen/option_button_layout_bottom_margin"> 

     <RadioButton android:id="@+id/option_skill" android:text="@string/option_skill" style="@style/option_button"/> 
     <RadioButton android:id="@+id/option_item" android:text="@string/option_item" style="@style/option_button" android:layout_marginLeft="@dimen/option_button_spacing"/> 

    </RadioGroup> 

style.xml

<style name='option_button'> 
     <item name="android:layout_width">@dimen/option_button_size</item> 
     <item name="android:layout_height">@dimen/option_button_size</item> 
     <item name="android:button">@null</item> 
     <item name="android:background">@drawable/option_button</item> 
     <item name="android:onClick">option_onclick</item> 
</style> 

вытяжке

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:constantSize="true" 
    android:dither="false" 
    android:variablePadding="false"> 
    <item android:drawable="@drawable/option_button_yellow" android:state_pressed="true"/> 
    <item android:drawable="@drawable/option_button_yellow" android:state_checked="true"/> 
    <item android:drawable="@drawable/option_button_white"/> 
</selector> 
Смежные вопросы