2011-12-15 15 views
7

ListView öğesi için başka bir vurgu rengi yapmak zorundayım. Ben öğelerinin özel adaptörü kullanın ve ben kod vardır:ListView öğesi için vurgu rengi nasıl ayarlanır?

Düzen: öğe düzeni için

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" 
    android:weightSum="1.0" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_weight="0.13" 
     android:background="@drawable/booklist_header" 
     android:orientation="horizontal" 
     android:layout_height="0dp" > 

     <ImageView 
      android:id="@+id/imageViewBookListBack" 
      android:layout_width="wrap_content" 
      android:layout_gravity="center" 
      android:layout_height="wrap_content" 
      android:src="@drawable/back_button" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayout2" 
     android:layout_width="fill_parent" 
     android:layout_weight="0.77" 
     android:layout_height="0dp" > 

     <ListView 
      android:id="@+id/listViewCurrentList" 
      android:listSelector="@drawable/selector" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
     </ListView> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayoutBooklistAdwhirl" 
     android:layout_width="fill_parent" 
     android:layout_weight="0.1" 
     android:layout_height="0dp" > 
    </LinearLayout> 

</LinearLayout> 

Kodu: seçicinin için

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" 
    android:orientation="horizontal" > 

    <ImageView 
     android:id="@+id/imageViewBookListItemImage" 
     android:layout_width="120dp" 
     android:layout_marginTop="15dp" 
     android:layout_height="120dp" /> 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="wrap_content" 
     android:layout_height="135dp" 
     android:layout_marginTop="15dp" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/textViewBookListItemTitle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Medium Text" 
      android:textColor="#000000" 
      android:textStyle="bold" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

     <TextView 
      android:id="@+id/textViewBookListItemAuthor" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Medium Text" 
      android:textColor="#000000" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 

    </LinearLayout> 

</LinearLayout> 

Kodu:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:drawable="@color/green" /> <!-- focused --> 
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@color/green" /> <!-- focused and pressed--> 
    <item android:state_pressed="true" android:drawable="@color/green" /> <!-- pressed --> 
    <item android:drawable="@color/green" /> <!-- default --> 
</selector> 

Kodu color.xml için:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="green">#006400</color> 
    <color name="white">#FFFFFF</color> 


</resources> 

Ama bir sorunum var: ListView öğesi tıklatıldığında rengi değiştirmiyor! Her zaman beyaz renk var. Nerede hata yaptım?

cevap

23

Bu böyle yaparız:

sizin ListView yılında,

İlk olarak aşağıdaki koymak:

android:listSelector="#00000000" 

Bu listSelector şeffaf (eğer liste görünümü tıkladığınızda normalde gördüğüm renklerle) yapar.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/selector" 
    android:orientation="horizontal" > 

Birkaç gün önce aynı sorunu vardı ve bu anlamaya bana yaş aldı:

Sonraki buna öğe düzeni LinearLayout ayarlayın. Umarım sizin için çalışır!

+1

Çok teşekkür ederim! – user1078760

+4

“android: background” öğesini içeren iki satır vardır. Lütfen düzeltin –

2

Bunu eklemeyi deneyebilirsiniz: android: drawSelectorOnTop = "True" ListView tanımına.

Bu yardımcı olur umarım!

P.S. Ana düzeninizi optimize edebilir ve gereksiz düzenleri kaldırabilirsiniz. Bunun için layoutopt kullanabilirsiniz.

+0

Teşekkür ederiz. Ama şimdi listeyi tıklattığım zaman ListView yeşil renk için renk değiştirir, ama sadece 1 öğeye ihtiyacım var. Bunu nasıl düzeltebilirim? – user1078760

+0

Hmm, bu problem için bir çözüm için kontrol edebilirsiniz: http://stackoverflow.com/questions/2562051/listview-item-background-via-custom-selector. Ayrıca kontrol edip en kısa zamanda size döneceğim. –

İlgili konular