2011-12-16 13 views
7

Ho una attività di elenco che viene visualizzata quando faccio clic su una scheda, il problema è che il colore dell'elenco diventa nero durante lo scorrimento, anche se non ho impostato alcun attributo in modo simile. per evitare questo problema? Grazie,Il colore elenco diventa nero durante lo scorrimento

+1

penso u deve controllare questo link [http://stackoverflow.com/questions/2833057/background- listview-diventa-nero-quando-scrolling] [1] [1]: http://stackoverflow.com/questions/2833057/background-listview-becomes-black-when-scrolling – androidGuy

risposta

21

Aggiungi questo al listView nel file XML:

android:cacheColorHint="#00000000" 

o in codice Java:

getListView().setCacheColorHint(0); 
0

Hai forse impostare un tema sul vostro attività o applicazione che utilizza il

Questo è un trucco che accelera il disegno 2D un po 'quando avere una vista (di solito surfaceView) che riempie il genitore. Ho visto questa causa strano rendering di sfondo di listViews e scrollViews.

Se stai usando l'oscuramento di windowbackground nullo, potresti provare a impostare un colore di sfondo per la tua visualizzazione elenco e scommetto che i problemi di scorrimento si annulleranno.

7

Ti suggerisco di leggere questo articolo: ListView Backgrounds: An Optimization, questo è necessario leggere l'articolo prima di personalizzare l'aspetto di LitsView.

Tratto da sopra documento:

Come accennato prima, ListView ha uno sfondo trasparente/traslucido per default, e così tutti i widget predefiniti nel toolkit UI Android. Ciò implica che quando ListView ridisegna i propri figli, deve mescolare i bambini con lo sfondo della finestra. Ancora una volta, ciò richiede costosi rilavorazioni dalla memoria che sono particolarmente dolorosi durante una pergamena o un'avventura quando il disegno avviene decine di volte al secondo.

Per migliorare le prestazioni di disegno durante le operazioni di scorrimento, il framework Android riutilizza il suggerimento sul colore della cache. Quando questo suggerimento è impostato, il framework copia ciascun figlio dell'elenco in una Bitmap riempita con il valore suggerimento (supponendo che un'altra ottimizzazione, chiamata cache a scorrimento, non sia disattivata). ListView quindi blits questi bitmap direttamente sullo schermo e poiché questi bitmap sono noti per essere opachi, non è richiesta alcuna fusione. Inoltre, poiché il suggerimento sul colore della cache predefinito è # 191919, si ottiene uno sfondo scuro dietro ogni elemento durante una pergamena.

Per risolvere questo problema, è sufficiente disabilitare l'ottimizzazione del suggerimento sul colore della cache, se si utilizza uno sfondo di colore non solido o impostare il suggerimento sul valore del colore solido appropriato. Puoi farlo dal codice (vedi setCacheColorHint(int)) o preferibilmente da XML, usando l'attributo android: cacheColorHint. Per disabilitare l'ottimizzazione, utilizzare semplicemente il colore trasparente #00000000.La figura seguente mostra un elenco con android:cacheColorHint="#00000000" impostato nel file di layout XML

+0

Il link sopra ora è un 404. Puoi farlo ee il post originale del blog di Romain Guy qui: http://www.curious-creature.org/2008/12/22/why-is-my-list-black-an-android-optimization/ – bkurzius

+0

@bkurzius si è rotto , Immagino sia successo a causa del nuovo sito Android è stato ridisegnato. Ed ecco un articolo originale sul sito developers.android.com: http://android-developers.blogspot.in/2009/01/why-is-my-list-black-android.html –

0

So che la sua tardi per rispondere a questa domanda, ma per gli altri che si trovano ad affrontare questo problema:

tecniche di cui sopra potrebbero funzionare ma la cosa reale uno dovrebbe fare è l'aggiunta di

android:scrollingCache="false" 

nel layout lista. Ti piace questa

 <ListView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/myList" 
    android:scrollingCache="false" 
    /> 

è possibile ottenere la ragione di questo da qui scrollingCache?

Grazie

Problemi correlati