Background ListView becomes black when scrolling
I have created a specific List which exists out of the following elements to create a scrollable list with every row containing a Image on the left side and some text on the right side:
To begin with a "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>
and then within the ListView I place the following "row" item :
<?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>
As long as the screen is shown statically (as in no movement) it will be shown correctly, but when I start scrolling through the list the background of the row-item (an "icon" as can be shown in the code) will be shown correctly but the background of the "root" layout will become completely black... when the scrolling stops the background will, most of the times, get back its color...
As I test I also added a TextView
in that root-element with the same background, this one will detain it's color when the List is scrolled...
Any idea why this is happening, and how to solve this?
Solution 1:
Add an attribute on the ListView
Tag
android:cacheColorHint="#00000000" // setting transparent color
For more details check this blog
Solution 2:
It's very simple just use this line in your layout file :
android:scrollingCache="false"
like this:
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollingCache="false"
/>
Solution 3:
you can use like this:
list.setCacheColorHint(Color.TRANSPARENT);
list.requestFocus(0);
Solution 4:
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"/>
Solution 5:
We have plenty of options for this problem, you can set the background as transparent through programming like
yourlistview.setCacheColorHint(Color.TRANSPARENT);
or through xml
android:cacheColorHint="@android:color/transparent"