#android #android-imagebutton
#Android #android-imagebutton
Вопрос:
Я создал три разных изображения для следующей кнопки в своей деятельности. Сфокусированное изображение, обычное изображение и изображение, когда кнопка не включена.
Тем не менее, я хотел протестировать его и посмотреть, как выглядит ot, когда он не включен.
Поэтому при запуске я устанавливаю для него значение false, и оно действительно работает, я не могу прикоснуться к нему, и оно больше не меняется на сфокусированное, но изображение не меняется.
ImageButton
Из моего макета.
<ImageButton
android:id="@ id/nextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:padding="5dp"
android:src="@drawable/nextbutton" />
Файл селектора nextbutton.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_next_focused" android:state_focused="true" android:state_pressed="true"/>
<item android:drawable="@drawable/btn_next_focused" android:state_focused="false" android:state_pressed="true"/>
<item android:drawable="@drawable/btn_next_focused" android:state_focused="true"/>
<item android:drawable="@drawable/btn_next" android:state_focused="false" android:state_pressed="false"/>
<item android:drawable="@drawable/btn_next_disabled" android:state_enabled="false"/>
</selector>
Что случилось? Он изменится только на сфокусированное и нормальное состояние, но никогда на отключенное. (Я только что заметил, что, возможно, это неправильное слово …).
Ответ №1:
Я это обнаружил. Я до сих пор не знаю наверняка, почему, но у меня есть ключ к разгадке. Я должен был использовать эту строку для каждого другого элемента в селекторе.
android:state_enabled="false"
Итак, это выглядит так :
<item android:drawable="@drawable/btn_next_focused" android:state_focused="true" android:state_pressed="true" android:state_enabled="false" />
<item android:drawable="@drawable/btn_next_focused" android:state_focused="false" android:state_pressed="true" android:state_enabled="false" />
<item android:drawable="@drawable/btn_next_focused" android:state_focused="true" android:state_enabled="false" />
<item android:drawable="@drawable/btn_next" android:state_focused="false" android:state_pressed="false" android:state_enabled="false" />
Комментарии:
1. Отличный совет, решивший мою проблему. В конце концов, это довольно просто: Android ищет соответствующий селектор сверху вниз. Первый (по умолчанию без определенных состояний) всегда совпадает и всегда используется…