2010-06-04 33 views
7

İnterweb'leri inceledim ve liste seçicisini kullanarak liste görünümünü renklerinin nasıl değiştirileceğiyle ilgili pek çok mesaj buldum. Ancak benim için işe yaramıyor. Yani sorum, ne yapıyorum yanlış yapıyorum? Ben aşağıda dosyaları kullanırkenAndroid ListView Renklerini Özelleştirme?

Ben tüm öğe arka başlangıçta mavi bir listesini almak. Ben odağı yukarı taşımak ve metin sadece koyu gri dönüşür ve aşağı öğe arka hala mavi olduğunda

(Beyaz beklenen). (Bu benim tek sıra beyaz dinlenme mavi olmasını beklediğiniz zaman olduğu)

ben arkaya tıkladığımda tıklanan satırın arka plan kararır ve tüm diğer satırlar yeşile döndü

. (Ben yeşile tıklanan satır olması beklenen ve dinlenme beyaz olması) İşte

benim ana düzen dosyasıdır: Burada

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:padding="10sp"> 
    <CheckBox 
     android:id="@+id/checkbox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:focusable="false" 
     /> 
    <TextView 
     android:id="@+id/title" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:singleLine="true" 
     android:textStyle="bold" 
     android:padding="7dip" 
     android:textSize="18sp" 
     android:layout_toRightOf="@id/checkbox" 
     /> 
</RelativeLayout> 

:

İşte
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<ListView 
    android:id="@android:id/list" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:listSelector="@drawable/item_selector" 
    /> 
<TextView 
    android:id="@android:id/empty" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/empty" 
    /> 
</LinearLayout> 

benim liste öğesi dosyasıdır benim renkler dosyası edilir: Burada

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="red">#ff00</color> 
    <color name="green">#f0f0</color> 
    <color name="blue">#f00f</color> 
    <color name="white">#ffff</color> 
</resources> 

benim seçici dosyasıdır:

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

Umarım ben yanlış yapıyorum o kadar aptal ve basit bir şey.

Şimdiden teşekkürler. listSelector = "çekilebilir @/item_selector" bütün subchild de sadece görünümü kökünde uygulanır:

+0

kendisini yerine bireysel liste öğelerinin toplanmış durumda tüm liste görünümü gibi geliyor. – YGL

cevap

7

ben robot düşünüyorum. Size sen kaynakların kullanımı olmadan programlama yapmak istiyorsanız Aslında

android:listSelector="@android:color/transparent" 
+0

Kazanan kombinasyon buydu. Teşekkür ederim! Bununla birkaç günlüğüne kavga ediyordum. –

+0

Çok iyi teşekkürler :) – ademar111190

1

:

deneyin android:background="@drawable/item_selector" ile RelativeLayout bir backgroud olarak/çekilebilir @ item_selector ekleyip listSelector şeffaf bir düzen koymak eleman renginizi ayarlayabilirsiniz. Örneğin, bir TextView metin rengi # F123456 ayarlamak için:

objTextView.setTextColor(color.parseColor("#F12345")); 

Bu dinamik belki bir veritabanı sadece cant kullanmak saklanan kullanıcı tarafından seçilebilir, bir liste görünümünde bir renk ayarlamak istiyorsanız kullanışlıdır Renk listeleri için statik bir kaynak dosyası.