2011-08-16 10 views
11

Ho una lista che mostrava un segno giallo sugli oggetti quando li toccavo. Tutto quello che ho fatto in modo diverso è cambiare l'immagine di sfondo in quel xml listview, e ora non mi mostrerà laLa lista di Android non evidenzia più la selezione onclick

Ecco il codice yellowtint

l'xml visualizzazione elenco, è solo un TextView con uno sfondo immagine:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textSize="24sp" 
    android:textColor="#000000" 
    android:background="@drawable/bglistitem" 
    android:gravity="center_vertical|center_horizontal"> 
</TextView> 

collocati in un altro layout dove è chiamato

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textSize="24sp" 
    android:textColor="#000000" 
    android:background="@drawable/bglistitem" 
    android:gravity="center_vertical|center_horizontal"> 
</TextView> 

ed ecco il codice:

lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {} 
}); 

come potete vedere sopra, non ho mai fatto nulla che cambierebbe il comportamento predefinito dell'evidenziazione della selezione, perché questo sarebbe diverso ora, forse qualcosa che vedi che non vedo?

risposta

20

Quando si aggiunge un nuovo sfondo a ListView si sovrascrive lo sfondo predefinito androids che molto probabilmente utilizzava un selettore per colorare gli oggetti List a seconda del loro stato.

tenta di utilizzare un selettore personalizzato

Creare un file XML, mycustombackground.xml, e aggiungere questo ad esso:

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

Sostituire le @drawables con il proprio in relazione allo Stato. Quindi imposta lo sfondo della listview sul file xml.

android:background="@drawable/mycustombackground" 

Si consiglia di dare un'occhiata all'XML per creare il colore giallo o semplicemente creare la propria immagine.

+0

L'ho capito, grazie alla tua intuizione, mi ha aiutato a limitare le possibilità. Risulta che se ci sono delle alfa nell'immagine, allora l'evidenziazione gialla avverrà. Se hai un'immagine opaca, questa non verrà evidenziata – CQM

Problemi correlati