431 Stimmen

Hintergrund ListView wird beim Scrollen schwarz

Ich habe eine spezifische Liste erstellt, die aus den folgenden Elementen besteht, um eine blätterbare Liste zu erstellen, wobei jede Zeile ein Bild auf der linken Seite und einen Text auf der rechten Seite enthält:

Beginnen Sie mit einem "Root"-Layout:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:background="#C8C8C8"
    >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
    <ListView
        android:id="@android:id/list"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false"
        android:divider="#C8C8C8"
        android:background="#C8C8C8"/>
</LinearLayout>

und dann innerhalb der ListView platziere ich das folgende "row"-Element:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:background="@drawable/bg_row"
>
    <ImageView
        android:layout_width="wrap_content"
        android:paddingLeft="10px"
        android:paddingRight="15px"
        android:paddingTop="5px"
        android:paddingBottom="5px"
        android:layout_height="wrap_content"
        android:src="@drawable/bg_image"
    />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="5px"
        android:paddingBottom="5px"
        android:textSize="16sp"
        android:textColor="#000000"
        android:layout_gravity="center"
        android:maxHeight="50px"/>
</LinearLayout>

Solange der Bildschirm statisch angezeigt wird (d.h. keine Bewegung), wird er korrekt angezeigt, aber wenn ich anfange, durch die Liste zu scrollen, wird der Hintergrund des Zeilen-Elements (ein "Symbol", wie im Code angezeigt werden kann) korrekt angezeigt, aber der Hintergrund des "Root"-Layouts wird komplett schwarz... wenn das Scrollen aufhört, wird der Hintergrund meistens wieder seine Farbe bekommen... Zum Testen habe ich auch ein TextView in diesem Root-Element mit dem gleichen Hintergrund, wird dieses seine Farbe beibehalten, wenn die Liste gescrollt wird... Jede Idee, warum dies geschieht, und wie dies zu lösen?

771voto

Praveen Punkte 88704

Fügen Sie ein Attribut zum ListView Tag

android:cacheColorHint="#00000000" // setting transparent color

Für weitere Einzelheiten siehe dieser Blog

23 Stimmen

This.getListView().setCacheColorHint(0); Vom Layout aus konnte ich die Farbe nicht einstellen. Aber ich schaffte es, es mit dem obigen Code zu tun. Ich habe diesen Code in 'onCreate' der Listenaktivität verwendet. Ich hoffe, diese Informationen helfen auch.

70 Stimmen

android:cacheColorHint="#0000" funktioniert auch, wenn Sie Angst vor Nullen haben.

137 Stimmen

Oder auch android:cacheColorHint="@android:color/transparent" wenn Sie Angst vor Zahlen haben :)

62voto

Mahesh Punkte 2854

Es ist ganz einfach: Verwenden Sie diese Zeile in Ihrer Layout-Datei:

android:scrollingCache="false"

wie diese:

<ListView 
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollingCache="false"
/>

2 Stimmen

Es funktioniert, aber ich glaube nicht, dass es klug ist, das zu tun: stackoverflow.com/questions/15570041/scrollingcache

1 Stimmen

Ich hatte einen Fall, in dem Android:cacheColorHint="#00000000" nicht funktionierte, aber Android:scrollingCache="false" schon. Danke.

27voto

nikki Punkte 3158

Können Sie wie folgt verwenden:

list.setCacheColorHint(Color.TRANSPARENT);
list.requestFocus(0);

10voto

AnDx Punkte 804
android:id="@android:id/list"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:divider="#C8C8C8"
android:background="#C8C8C8"
android:cacheColorHint="#00000000"/>

8voto

Sampath Kumar Punkte 4253

Wir haben viele Optionen für dieses Problem, können Sie den Hintergrund als transparent durch Programmierung wie

yourlistview.setCacheColorHint(Color.TRANSPARENT); 

oder über xml

android:cacheColorHint="@android:color/transparent"

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