Background ListView становится черным при прокрутке

Я создал конкретный Список, который существует из следующих элементов, чтобы создать прокручиваемый список с каждой строкой, содержащей изображение слева, и некоторый текст с правой стороны:

Чтобы начать с макета "root":

<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>

а затем в ListView я поместил следующий элемент "row":

<?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>

Пока экран отображается статически (как при отсутствии движения), он будет отображаться правильно, но когда я начну прокручивать список, фон строки-строки ( "значок", как показано в коде ) будет отображаться правильно, но фон "корневого" макета станет полностью черным... когда прокрутка останавливает фон, в большинстве случаев, вернуть его цвет... Когда я тестирую, я также добавил TextView в этом корневом элементе с тем же фоном, который задерживает его при прокрутке списка... Любая идея, почему это происходит, и как это решить?

Ответ 1

Добавить атрибут в теге ListView

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

Подробнее... этот блог

Ответ 2

Очень просто использовать эту строку в вашем файле макета:

android:scrollingCache="false"

вот так:

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

Ответ 3

вы можете использовать следующее:

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

Ответ 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"/>

Ответ 5

У нас есть много вариантов этой проблемы, вы можете установить фон как прозрачный с помощью программирования, например

yourlistview.setCacheColorHint(Color.TRANSPARENT); 

или через xml

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

Ответ 6

Я использую изображения в listView, и он становится черным, иногда в samsung s4 даже не прокручивается. Это была глупая ошибка, которую я сделал в адаптере. Я просто поместил свой взгляд в null, чтобы исправить эту проблему.

 @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Holder holder;
            convertView = null; // convert view should be null
            if (convertView == null) {
                holder = new Holder();
                convertView = inflater1.inflate(R.layout.listview_draftreport_item, null);
             } 
        }

Ответ 7

Есть ответы на этот вопрос, но сегодня я понял, что этот вопрос по-прежнему не содержит важной информации.

Существует два возможных решения проблемы: оба работают, но каждый из них должен использоваться в разных ситуациях.


Методы

Используйте android:cacheColorHint, когда ваш ListView имеет сплошной цвет фона.

<item name="android:cacheColorHint">@android:color/transparent</item>

Используйте android:scrollingCache, когда ваш ListView имеет (сложное) изображение в качестве фона.

<item name="android:scrollingCache">false</item>

Примечание

Когда ваш ListView имеет сплошной цвет фона, оба метода будут работать, поэтому будет работать не только cacheColorHint. Но не рекомендуется использовать метод scrolingCache для сплошных цветных фонов, поскольку он отключает метод оптимизации, используемый для плавного анимации и прокрутки ListView.

Примечание для примечания: scrolingCache, установленное на false, не обязательно означает, что анимация ListView и прокрутка станут медленными.

Ответ 8

В вашем xml, где использовать Listview set

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

Ответ 9

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

Ответ 10

Следующие работали для меня:

myListView.setScrollingCacheEnabled(false);

Ответ 11

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

или

не устанавливать фон listview.