Страница 1 из 1

Два состояния кнопки

Добавлено: 04 окт 2012, 17:07
rezak90
Обычный вопрос, даже стыдно что не могу найти решения.
Имеется кнопка (не важно Button или ImageButton), у неё должно быть два состояния (активная и не активная, но не enabled и disabled), состояниями являются две картинки.

Код: Выделить всё

<ImageButton
	        android:id="@+id/btnHouse"
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
                android:clickable="true"
	        android:background="@drawable/selector_button" />

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item android:state_enabled="false" android:drawable="@drawable/house" />
    <item android:state_enabled="true" android:drawable="@drawable/house_deactive" />
    
</selector>
Перепробывал все возможные состояния. Возможно нужно покомбинировать...

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 18:00
Finch
Вот то что те6е нужно =)

Код: Выделить всё

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

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 18:38
rezak90
нет =)
state_pressed - состояние когда кнопка нажата, а мне нужно "переключатель", то есть раз нажали иконка поменялась, ещё раз иконка вернулась.

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 18:43
neoksi
rezak90
Может просто легче обработчик создать?

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 18:57
rezak90
да это была моя самая первая мысль, но так как таких кнопочек 7 штук то это лишний код, сказали что через селекторы можно, я тоже думал что можно, но пока не вижу как =)

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 19:53
neoksi
Будильник пишешь? :)

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 19:58
neoksi
А если использовать CheckBox? Просто стиль отрисовки ему изменить.

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 20:29
rezak90
не не будильник, на карте кнопочки которые включают/отключают показ некоторых действий, на счёт чекбокса интересно но геморно, ладно утро вечера мудренее, завтра покажет что да как.

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 20:47
AndreyI
Может просто тупо в обработчике нажатия менять картинку (v.setImageResource(R.drawable.house)).

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 21:19
rezak90
AndreyI писал(а):Может просто тупо в обработчике нажатия менять картинку (v.setImageResource(R.drawable.house)).
да это была моя самая первая мысль, но так как таких кнопочек 7 штук то это лишний код, сказали что через селекторы можно, я тоже думал что можно, но пока не вижу как =)

Re: Два состояния кнопки

Добавлено: 04 окт 2012, 21:44
AndreyI

Код: Выделить всё

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

    <item android:drawable="@drawable/house" android:state_selected="false"/>
    <item android:drawable="@drawable/house_deactive" android:state_selected="true"/>

</selector>
А в обработчик добавляем всего одну строчку:

Код: Выделить всё

	public void onClick(View v) {
		v.setSelected(!v.isSelected());

		...//код обработки нажатия


	}

Re: Два состояния кнопки

Добавлено: 05 окт 2012, 10:04
rezak90
AndreyI красавчик, действительно помогло, хорошая идея!