Интерфейс, диалоги, темы, стили, меню
-
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
Сообщение
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>
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 04 окт 2012, 18:38
нет =)
state_pressed - состояние когда кнопка нажата, а мне нужно "переключатель", то есть раз нажали иконка поменялась, ещё раз иконка вернулась.
R.id.team
Политика на форуме запрещена
-
neoksi
- Сообщения: 712
- Зарегистрирован: 26 июл 2012, 10:42
-
Контактная информация:
Сообщение
neoksi » 04 окт 2012, 18:43
rezak90
Может просто легче обработчик создать?
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 04 окт 2012, 18:57
да это была моя самая первая мысль, но так как таких кнопочек 7 штук то это лишний код, сказали что через селекторы можно, я тоже думал что можно, но пока не вижу как =)
R.id.team
Политика на форуме запрещена
-
neoksi
- Сообщения: 712
- Зарегистрирован: 26 июл 2012, 10:42
-
Контактная информация:
Сообщение
neoksi » 04 окт 2012, 19:53
Будильник пишешь?

-
neoksi
- Сообщения: 712
- Зарегистрирован: 26 июл 2012, 10:42
-
Контактная информация:
Сообщение
neoksi » 04 окт 2012, 19:58
А если использовать CheckBox? Просто стиль отрисовки ему изменить.
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 04 окт 2012, 20:29
не не будильник, на карте кнопочки которые включают/отключают показ некоторых действий, на счёт чекбокса интересно но геморно, ладно утро вечера мудренее, завтра покажет что да как.
R.id.team
Политика на форуме запрещена
-
AndreyI
- Сообщения: 372
- Зарегистрирован: 14 май 2012, 16:18
Сообщение
AndreyI » 04 окт 2012, 20:47
Может просто тупо в обработчике нажатия менять картинку (v.setImageResource(R.drawable.house)).
-
rezak90
- Сообщения: 3422
- Зарегистрирован: 26 июн 2012, 13:22
- Откуда: UA
-
Контактная информация:
Сообщение
rezak90 » 04 окт 2012, 21:19
AndreyI писал(а):Может просто тупо в обработчике нажатия менять картинку (v.setImageResource(R.drawable.house)).
да это была моя самая первая мысль, но так как таких кнопочек 7 штук то это лишний код, сказали что через селекторы можно, я тоже думал что можно, но пока не вижу как =)
R.id.team
Политика на форуме запрещена
-
AndreyI
- Сообщения: 372
- Зарегистрирован: 14 май 2012, 16:18
Сообщение
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
-
Контактная информация:
Сообщение
rezak90 » 05 окт 2012, 10:04
AndreyI красавчик, действительно помогло, хорошая идея!
R.id.team
Политика на форуме запрещена