53 Stimmen

Scrollen einer ListView ändert alles von Weiß zu Schwarz

Ich habe eine benutzerdefinierte Listenansicht und ich möchte, dass der Hintergrund der Liste weiß ist, also tue ich so etwas wie dieses, das gut funktioniert.

listView = (ListView) this.findViewById(R.id.listview);
listView.setBackgroundColor(Color.WHITE);

Das Problem ist, dass sich der Hintergrund aller Listenelemente schwarz färbt, wenn man in der Liste blättert, was schrecklich aussieht.

Ich habe versucht, in meiner Listenansicht die Hintergrundfarbe auf weiß zu setzen. Wenn ich die Ansicht aufblase, habe ich auch versucht, die Hintergrundfarbe auf weiß zu setzen:

view.setBackgroundColor(Color.WHITE);

Beides behebt das Problem der scrollenden Hintergrundfarbe, aber jetzt scheint das Element nicht anklickbar zu sein, obwohl es das ist. Was ich damit meine ist, dass die onClick noch gut funktioniert, aber der Hintergrund nicht blinken, um orange, um den Benutzer wissen, dass er es angeklickt hat.

Wie kann ich einen weißen Hintergrund in einer Listenansicht haben, der beim Scrollen weiß bleibt und den normalen orangefarbenen Listenhintergrund anzeigt?

Merci !

118voto

Romain Guy Punkte 96489

Die Lösung ist sehr einfach: Sie müssen auch den Cache-Farbhinweis auf weiß setzen: setCacheColorHint(Color.WHITE) . Sie brauchen die Hintergrundfarbe der Listenelemente nicht zu ändern.

1 Stimmen

Das hat perfekt funktioniert. listView = (ListView) this.findViewById(R.id.listview); listView.setBackgroundColor(Color.WHITE); listView.setCacheColorHint(Color.WHITE);

36 Stimmen

ListView.setCacheColorHint(Color.TRANSPARENT); oder Android:cacheColorHint="#00000000" //Hintergrundfarbe wiederverwenden

0 Stimmen

Transparent funktionierte nicht, weiß schon

7voto

Sababado Punkte 2504
ListView lv = getListView();
setCacheColorHint(0);

Setzen Sie den Cache-Farbhinweis auf Null.

6voto

Google Punkte 2133

Die Lösung ist sehr einfach, Sie müssen auch den Cache-Farbhinweis in der Xml-Datei auf Schwarz setzen.

android:cacheColorHint="#000000"

3voto

Tripaty Sahu Punkte 935

Android versucht, die Leistung des ListView-Scrollens zu verbessern, indem es Layout-Informationen zwischenspeichert. Wenn Sie lange Listen mit Daten scrollen, sollten Sie auch die Eigenschaft Android:cacheColorHint in der ListView-Deklaration in der AXML-Definition der Aktivität festlegen (auf denselben Farbwert wie der Hintergrund Ihres benutzerdefinierten Zeilenlayouts). Wird dieser Hinweis nicht angegeben, kann es zu einem "Flackern" kommen, wenn der Benutzer durch eine Liste mit benutzerdefinierten Zeilenhintergrundfarben blättert. Geben Sie also dem Hintergrund des Listenelements und dem Android:cacheColorHint die gleiche Farbe. Sie können sich auf den folgenden Code beziehen.

In meinem Adapter-Layout habe ich als

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ADAPTER_CONTAINER_PRIMARY"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FAFAEE"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:gravity="center">
     .....

Und in der Listenansicht

<ListView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/LIST_GRID_LIST_INSTANCES"
            android:focusableInTouchMode="true"     
            android:smoothScrollbar="true"
            android:divider="@drawable/Gray"
            android:dividerHeight="0.05dp"
            android:cacheColorHint="#FAFAEE"
            android:background="@drawable/round"/>

1voto

Leo Accend Punkte 313

Wenn Ihr ListView auf einem komplexeren Hintergrund gezeichnet wird, z. B. einer Bitmap oder einem Farbverlauf, dann müssen Sie den Bildlauf-Cache möglicherweise ganz deaktivieren. Ich habe die Einstellung android:scrollingCache="false" in meiner ListView um dieses Problem zu lösen.

http://developer.Android.com/reference/Android/widget/AbsListView.html#attr_android:scrollingCache

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X