2012-02-24 2 views
6

Ho cercato disperatamente di risolvere questo problema in cui sono evidenziati i miei oggetti ListView. Ho esaminato qualsiasi soluzione che potrei trovare qui su StackOverflow e non ho trovato nessuno che funzioni per me.Come prevenire gli oggetti ListView higlighting in nero

Prima di tutto, questa è una ListView in un LinearLayout in un ViewPager in un LinearLayout.

Ogni elemento in tale Listview è un LinearLayout che contiene un LinearLayout (contenente un TextView) e una galleria. La Galleria contiene più LinearLayouts contenenti TextView e Imageview in FrameLayout.

Questo problema si verifica, non al clic ma al trascinamento, come quando si fa scorrere il dito su una storia (a volte mentre la ListView scorre con il trascinamento) l'elemento sottostante viene selezionato. Inoltre, questo particolare problema si verifica solo su dispositivi in ​​cui l'effetto di over-scroll non provoca un rimbalzo durante lo scorrimento.

tentativi di risolvere il problema sono i seguenti:

  • impostare il selettore List per il colore di sfondo in XML (Fail)
  • impostare l'elenco Selezionare per Alpha # 00000000 in XML (Fail)
  • quanto sopra, ma Programatically
  • quanto sopra, ma per tema
  • codice che imposta la selezione a -1 onListItemClick
  • Rimozione t egli sfondo da LinearLayout elenco di questo elemento (Funziona su 4,0)
  • Impostazione android:cacheColorHint-#00000000 (non fa nulla?)

Qualsiasi aiuto sarebbe apprezzato. Non riesco proprio a capire perché lo stia facendo e ho davvero bisogno che si fermi.

Screenshot of ListView Item being HIghlighted

+0

Quando si aggiunge un elemento all'elenco che è selezionabile, si disabilita la listaSelezione, immagino che si possa abusare di questo o di approfondire. – Warpzit

risposta

8

Questo è stato un problema più interessante. La soluzione di questo è ancora più interessante.

Per qualche ragione, ciò che non ho provato, e quello che nessuno pensava di, era di rimuovere android:background dal LinearLayout per gli elementi ListView.

Dopo aver rimosso android:background, il layout continua a essere visualizzato correttamente e il nero non viene più visualizzato.

Se hai un problema simile a questo che questo non risolve, si consiglia di controllare il blog Android: Why is my list black?

EDIT: Questo ha funzionato bene per ICS, ma ha suscitato un problema molto più grande in 2.1 . Per risolvere completamente il calvario, ho finito per dover specificare android:cacheColorHint="#000000" per il ListView (e lo LinearLayout per buona misura) nei miei stili in linea e nella definizione di stile applicata allo ListView.

+4

infatti il ​​suggerimento sul colore della cache deve essere impostato su '# 00000000', non' # 000000' –