Android-селектор не работает

#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 ищет соответствующий селектор сверху вниз. Первый (по умолчанию без определенных состояний) всегда совпадает и всегда используется…