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

Интерфейс, диалоги, темы, стили, меню
Ответить
Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 04 окт 2012, 17:07

Обычный вопрос, даже стыдно что не могу найти решения.
Имеется кнопка (не важно 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>
Перепробывал все возможные состояния. Возможно нужно покомбинировать...
R.id.team
Политика на форуме запрещена

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

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

Сообщение Finch » 04 окт 2012, 18:00

Вот то что те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>
CEO of a company R.id.team

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 04 окт 2012, 18:38

нет =)
state_pressed - состояние когда кнопка нажата, а мне нужно "переключатель", то есть раз нажали иконка поменялась, ещё раз иконка вернулась.
R.id.team
Политика на форуме запрещена

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

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

Сообщение neoksi » 04 окт 2012, 18:43

rezak90
Может просто легче обработчик создать?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 04 окт 2012, 18:57

да это была моя самая первая мысль, но так как таких кнопочек 7 штук то это лишний код, сказали что через селекторы можно, я тоже думал что можно, но пока не вижу как =)
R.id.team
Политика на форуме запрещена

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

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

Сообщение neoksi » 04 окт 2012, 19:53

Будильник пишешь? :)

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

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

Сообщение neoksi » 04 окт 2012, 19:58

А если использовать CheckBox? Просто стиль отрисовки ему изменить.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 04 окт 2012, 20:29

не не будильник, на карте кнопочки которые включают/отключают показ некоторых действий, на счёт чекбокса интересно но геморно, ладно утро вечера мудренее, завтра покажет что да как.
R.id.team
Политика на форуме запрещена

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

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

Сообщение AndreyI » 04 окт 2012, 20:47

Может просто тупо в обработчике нажатия менять картинку (v.setImageResource(R.drawable.house)).

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 04 окт 2012, 21:19

AndreyI писал(а):Может просто тупо в обработчике нажатия менять картинку (v.setImageResource(R.drawable.house)).
да это была моя самая первая мысль, но так как таких кнопочек 7 штук то это лишний код, сказали что через селекторы можно, я тоже думал что можно, но пока не вижу как =)
R.id.team
Политика на форуме запрещена

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

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

Сообщение AndreyI » 04 окт 2012, 21:44

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

<?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());

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


	}

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 05 окт 2012, 10:04

AndreyI красавчик, действительно помогло, хорошая идея!
R.id.team
Политика на форуме запрещена

Ответить