Прокрутка списка изменяет все от белого до Черного [дубликат]


этот вопрос уже есть ответ здесь:

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

у меня есть пользовательский вид списка, и я хочу, чтобы фон списка был белым, поэтому я делаю что-то вроде этого, что отлично работает.

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

проблема в том, что при прокрутке списка фон всех список товаров меняется на черный, что выглядит ужасно.

Я попытался в моем представлении списка установить цвет фона на белый. Когда я раздуваю вид, я также попытался установить цвет фона на белый:

view.setBackgroundColor(Color.WHITE);

оба из них устраняют проблему прокрутки цвета фона, но теперь элемент не кажется интерактивным, даже если это так. Я имею в виду, что onClick по-прежнему работает нормально, но фон не мигает оранжевым, чтобы пользователь знал, что он нажал оно.

Как я могу иметь белый фон в виде списка, который остается белым при прокрутке, и делает обычный список деятельности оранжевую кнопку фон?

спасибо!

5 52

5 ответов:

решение очень простое, вам также нужно установить подсказку цвета кэша на белый: setCacheColorHint(Color.WHITE). Вам не нужно изменять цвет фона элементов списка.

ListView lv = getListView();
setCacheColorHint(0);

установите подсказку цвета кэша в ноль.

решение очень простое, вам также нужно установить подсказку цвета кэша на черный в xml.

android:cacheColorHint="#000000"

Android пытается улучшить производительность прокрутки ListView путем кэширования информации о макете. Если у вас есть длинные списки прокрутки данных, вы также должны установить свойство android:cacheColorHint в объявлении ListView в определении AXML действия (к тому же значению цвета, что и фон вашего пользовательского макета строк). Отказ включить эту подсказку может привести к "мерцанию", когда пользователь прокручивает список с пользовательскими цветами фона строки. Так дайте такой же цвет к фон listitem и android: cacheColorHint.вы можете сослаться ниже код.

в моем макете адаптера я дал как

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

и в виде списка

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

Если ListView рисуется поверх более сложного фона-скажем, растрового изображения или градиента-тогда вам может потребоваться полностью отключить кэш прокрутки. Я в конечном итоге настройки android:scrollingCache="false" на ListView чтобы решить эту проблему.

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