2010-10-29 17 views
14

Jestem Android newbie próbuje dowiedzieć się po stronie UI rzeczy i robi moją głowę w Oto, co mam teraz.Jak stylować wybrany element w Androidzie ListView?

breeds_listing.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    <ListView android:id="@+id/breedsListView" 
     android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:dividerHeight="0px" android:divider="#00000000"></ListView> 
</LinearLayout> 

breeds_listing_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:background="@drawable/list_item_background" 
    android:orientation="horizontal" > 
    <TextView android:id="@+id/allbreeds_single_item" 
     android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:gravity="center_horizontal"></TextView> 
</LinearLayout> 

list_item_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#043402" /> 
    <stroke android:width="3dp" color="#ffff8080" /> 
    <corners android:radius="8dp" /> 
    <padding android:left="10dp" android:top="10dp" android:right="10dp" 
     android:bottom="10dp" /> 
</shape> 

W Czapka, którą staram się wymyślić, to w jaki sposób stylizować wybrany przedmiot? W tej chwili wybrany element ma upiorne pomarańczowe tło, które pod zaokrąglonym zielonym prostokątem daje efekt pomarańczowego konturu. Jestem pewien, że nie zrobiłem rzeczy zgodnych z najlepszymi praktykami, więc wszelkie sugestie i ulepszenia byłyby bardzo mile widziane.

Dziękujemy, D.

Odpowiedz

26

to zrobić:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="true"> 
     <shape > 
     <solid android:color="#929292" /> 
     </shape> 
    </item> 



    <item> 
    <shape > 
     <solid android:color="#FFFFFF" /> 
    </shape> 
    </item> 

</selector> 

Więc można użyć tej właściwości android:state_pressed="true"

W moim przykładzie, tło komórka będzie tylko biały i szary po naciśnięciu.

Mam nadzieję, że to pomoże!

+0

Yup - Jestem okropnie zapominając o głosowaniu lub akceptacji odpowiedzi! Na pewno nad tym popracuję ... właśnie przejrzałem moje pytania i zaznaczyłem te, które sprawdziły się u mnie. Dzięki za delikatne przypomnienie: o) – codedog

+0

Yippeeeee! Mam go do roboty - dziękuję za przeniesienie mnie przez blok umysłu! Dunno, dlaczego nie pomyślałem o tym, ponieważ robimy coś bardzo podobnego w świecie WPF mojej codziennej pracy! Chodziło tylko o znalezienie właściwego stanu: o) – codedog

+0

Zadowolony z usłyszenia, że ​​zadziałało dla ciebie ^^ –

3

Musisz użyć StateListDrawable.

Możesz znaleźć przykład przedmiotów ListView here.

Jeśli chcesz wybrać określony kolor/losowanie, gdy element jest zaznaczony, użyj android:state_focused="true".

Powiązane problemy