2012-06-12 22 views
12

Liste görünümünde bir UI sorunu yaşıyorum. Liste görünümünde ve listedeki herhangi bir öğeyi seçiyorum, tüm liste görünümünü vurgular. Seçim iyi çalışıyor, dinleyicide doğru öğeyi buluyorum.Android Liste görünümü Tüm listeyi gösteriliyor

Ancak sorun şu ki, herhangi bir öğeyi seçtiğimde, liste görünümünün tamamı vurgulanır, bu yüzden hangi satırın seçildiğini söylemek zor olur.

Bu iyi çalışıyor üzerinde Android> 3.1 - Şu anda bir 2.3 aygıtta test ediyorum.

android (işe yaradı emin değilim neden):

<ListView 
     android:id="@+id/myList" 
     android:layout_width="match_parent" 
     android:layout_height="300dp" 
     android:layout_marginTop="@dimen/margin_medium" 
     android:background="@drawable/border" 
     android:listSelector="#99000000" 
     android:scrollbarFadeDuration="1000000" 
     android:scrollbars="vertical" > 
    </ListView> 

cevap

-3

bu çizgiyi kaldırarak bu sabit listSelector = "# 99000000" Geçenlerde aynı sorunu vardı, ama neden oldu

26

Android < 3.0 hata: eğer liste öğeniz için seçici olarak bir @ renk ayarladıysanız, tüm liste alanını dolduracaktır. Çözüm, @color yerine 'şekil' çekilebilir kullanmaktır.

Yani, benzer içerikli res/drawable klasörde yeni bir XML dosyası oluşturun: (aynı zamanda res/drawable klasördeki bir XML dosyası olarak oluşturulan) state_pressed için ListView seçicideki

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

    <solid android:color="@color/my_list_item_pressed_color" /> 
</shape> 

Ve referans oluşturdu çekilebilir:

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

Ve ListView bu seçiciyi kullanabilirsiniz:

<ListView 
    ..... 
    android:listSelector="@drawable/list_item_selector" /> 

Hepsi bu kadar. En az Android 2.2-2.3 ile çalışır.

+0

Teşekkür: Bu liste öğesi düzeni

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/background_color"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Your text here" /> </LinearLayout> 

Ve liste hiçbir liste seçici ile olduğunu! Bu 3.0/4.0 öncesi hata gerçekten rahatsız edici, çünkü hiç belgelenmiyorlar! –

+0

Bu yazıyı saat önce buldum. Not: Programatik olarak da yapabilirsiniz: ShapeDrawable sd = new ShapeDrawable (yeni RectShape()); . Sd.getPaint() setColor (Color.RED); listview.setSelector (SD); ' –

1

Seçicinizi değiştirmek istemezseniz, ListView'in listSelector alanında değil, liste öğesinin düzeninin arka planı olarak da ayarlayabilirsiniz. Liste öğeleri, dokunduğunda "renk" durumunu alır ve renk düzgün şekilde görüntülenir.

Bu, tüm Android sürümlerinde çalışır.

Ör:

<ListView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
İlgili konular