List-Farbe wird beim Scrollen schwarz

7

Ich habe eine Listenaktivität, die gefüllt wird, wenn ich auf einen Tab klicke, das Problem ist, dass die Listenfarbe beim Scrollen schwarz wird, obwohl ich keine Attribute gesetzt habe, die so passieren. Irgendwelche Vorschläge, um dieses Problem zu vermeiden? Danke,

    
user1065490 16.12.2011, 07:18
quelle

4 Antworten

21

Fügen Sie dies zu listView in der XML-Datei hinzu:

%Vor%

oder in Java-Code:

%Vor%     
Shailendra Singh Rajawat 16.12.2011, 07:22
quelle
7

Ich würde vorschlagen, dass Sie durch diesen Artikel gehen: ListView Backgrounds: Eine Optimierung , dies Vor dem Anpassen von LitsView muss der Artikel gelesen werden.

Aus dem obigen Dokument übernommen:

Wie bereits erwähnt, hat ListView standardmäßig einen transparenten / transluzenten Hintergrund und damit alle Standard-Widgets im Android-UI-Toolkit. Dies bedeutet, dass , wenn ListView seine untergeordneten Elemente neu zeichnet, die untergeordneten Elemente mit dem Hintergrund des Fensters verschmelzen muss . Dies erfordert wiederum kostspielige Rücklesungen aus dem Speicher, die während eines Scrolls oder eines Flings besonders schmerzhaft sind, wenn das Zeichnen Dutzende von Malen pro Sekunde passiert.

Um die Zeichenleistung während der Bildlaufvorgänge zu verbessern, verwendet das Android-Framework den Cache-Farbhinweis erneut. Wenn dieser Hinweis gesetzt ist, kopiert das Framework jedes Kind der Liste in eine Bitmap, die mit dem Hinweiswert gefüllt ist (unter der Annahme, dass eine andere Optimierung, der Scroll-Cache, nicht ausgeschaltet ist). ListView blendet diese Bitmaps dann direkt auf dem Bildschirm und da diese Bitmaps dafür bekannt sind, undurchsichtig zu sein, ist kein Mischen erforderlich. Da der standardmäßige Cache-Farbhinweis # 191919 ist, erhalten Sie während eines Bildlaufs einen dunklen Hintergrund hinter jedem Element.

Um dieses Problem zu beheben, müssen Sie entweder die Cache-Farbhinweisoptimierung deaktivieren, wenn Sie einen nicht durchgehenden Hintergrund verwenden, oder den Hinweis auf den entsprechenden Volltonwert setzen. Sie können dies über den Code (siehe setCacheColorHint(int) ) oder vorzugsweise über XML mit dem Attribut android: cacheColorHint tun. Um die Optimierung zu deaktivieren, verwenden Sie einfach die transparente Farbe #00000000 . Der folgende Screenshot zeigt eine Liste mit android:cacheColorHint="#00000000" in der XML-Layoutdatei

    
Paresh Mayani 16.12.2011 07:25
quelle
0

Hast du vielleicht ein Thema für deine Aktivität oder App festgelegt, die das

verwendet? %Vor%

Dies ist ein Trick, der das 2D-Zeichnen erheblich beschleunigt, wenn Sie eine Ansicht (normalerweise "surfaceView") haben, die die Eltern füllt. Ich habe gesehen, dass dies ein seltsames Hintergrund-Rendering von ListViews und ScrollViews verursacht.

Wenn Sie den Null-Fensterhintergrund-Hack verwenden, können Sie versuchen, eine Hintergrundfarbe für Ihre Listenansicht festzulegen, und ich wette, dass die Probleme beim Blättern nachlassen.

    
mmeyer 16.12.2011 07:24
quelle
0

Ich weiß es spät, um diese Frage zu beantworten, aber für andere, die mit diesem Problem konfrontiert sind:

Die obigen Techniken mögen funktionieren, aber das eigentliche was man tun sollte, ist

hinzuzufügen %Vor%

in Listenlayout . So,

%Vor%

Sie können den Grund dafür von hier scrollingCache?

erfahren

Danke

    
Syeda Zunairah 11.03.2015 12:16
quelle

Tags und Links