2011-07-08 10 views
6

Mam galeria widget, podczas przewijania go, aktualnie wybrany obraz ma granicy - tylko prosty przełącznik, jak toGaleria setSelection nie odpala selektor obrazu

<selector 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_selected="true" 
    android:drawable="@drawable/thumbnail_frame" /> 
<item 
    android:drawable="@android:color/transparent" /> 

oraz w galerii adaptera getView jego załączeniu tak, jak to

Problem polega na tym, że po zmianie wyboru galerii za pomocą metody setSelection() wybrany element nie ma ramki. Ale kiedy po prostu przewijam go palcem na wybranej pozycji działa OK. Myślę, że setSelection() nie uruchamia setSelected() lub coś podobnego.

Przypuszczam, że rozwiązaniem byłoby wywołanie metody setSelected() obok metody setSelection(), ale jak mogę ją wywołać dla aktualnie wybranego ImageView? Czy jest jakiś inny sposób robienia tego?

+0

Powinieneś statycznie przypisać tło do widoku adaptera (w układzie). Może to być twój kod, który ustawia, że ​​tło dzieje się zbyt późno, aby "zobaczyć" wybrany stan. Wystąpiły również problemy, jeśli widok adaptera wchodzącego do galerii nie jest możliwy do ustawienia; możesz dodać stany do tego również w selektorze. Czy próbowałeś swoich sugestii i czy to zadziałało? Zawsze możesz sprawdzić kod źródłowy 'Gallery.setSelection()' dla odniesienia! –

+0

tylko komentarz do twojego kodu, image.setBackgroundResource (R.drawable.xxx) jest prostszy niż image.setBackgroundDrawable (getResources(). GetDrawable (R.drawable.xxx)) – Marmoy

Odpowiedz

0

Użyj ViewPagera i setCurrentItem. Działają znacznie lepiej.

+0

No cóż, teraz mogę go użyć, ale to nie był dostępny w czasie postu. – Sver