2012-09-12 9 views
7

Próbuję dodać do mojej istniejącej statyny rysunkowej, stanu wyłączonego i po prostu nie działa.Statelist drawable android: state_enabled nie działa w xml

pierwotnie miałem ten kod:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/store_item_background_selected" android:state_selected="true"/> 
<item android:drawable="@drawable/store_item_background"/> 
</selector> 

i to działało idealnie dla wybranych i nie wybiera.

teraz chciałem dodać android: state_enabled = "false" tak:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/store_item_background_selected" android:state_selected="true"/> 
<item android:drawable="@drawable/store_item_background" android:state_enabled="true"/> 
<item android:drawable="@drawable/store_item_background_disabled"/> 
</selector> 

i nigdy nie przełącza się na niepełnosprawnego obrazu.

jakieś pomysły?

EDIT

dodałem setEnabled(false) do konstruktora widoku mam ustalającego ten statelist drwable i teraz widzę, niepełnosprawność obraz, ale raz ustawić widok na włączony, nie przełączy się ponownie wyłączony .

Odpowiedz

7

Spróbuj

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

<item android:drawable="@drawable/store_item_background_selected" android:state_enabled="true" android:state_selected="true"/> 
<item android:drawable="@drawable/store_item_background" android:state_enabled="true"/> 
<item android:drawable="@drawable/store_item_background_disabled" android:state_enabled="false"/> 

</selector> 
+0

nie zrobić różnicę. zobacz edytuj – piojo

+0

Niestety, błąd w moim kodzie, w którym ustawiłem go wyłączony. – piojo

+0

Zła odpowiedź. Nie wyjaśniłem pracy NOR. – Vucko

15

Chociaż jest to bardzo stare pytanie. Włącz należy odpowiednio wpisać selektor.

  1. stan wyłączone pierwszy
  2. wciśnięty stan sekund
  3. stan normalny ostatni

+0

Zmiana kolejności natychmiast naprawiła mój problem. gdzie znalazłeś tę informację? –

+0

Niektóre miejsca w google, gdy utknąłem na wiele godzin w tym samym problemie –

+0

Miałem ten problem przez długi czas przy użyciu tego podejścia: StateListDrawable res = new StateListDrawable(); res.addState (new int [] {- ​​android.R.attr.state_enabled}, new ColorDrawable (color)); res.addState (nowy int [] {android.R.attr.state_enabled, android.R.attr.state_pressed}, new ColorDrawable (color)); res.addState (nowy int [] {}, new ColorDrawable (color)); I działało to natychmiast. Dzięki. żałuję, że gdzieś tam nie było udokumentowane ... – ClayHerendeen

Powiązane problemy