Я создал ListView с TextViews в качестве элементов, большинство из которых имеют определенный цвет в качестве фона, но некоторые имеют собственный @ drawable / shape в качестве фона (т. Е. Верхний и нижний элементы, которые имеют закругленные углы).Эти фоны устанавливаются как часть списков состояний, чтобы обеспечить другой цвет фона при нажатии элементов.ListSelector ListView установлен в прозрачный, и вместо этого содержащиеся TextViews в элементах устанавливаются в clickable.
ListView:
<ListView android:id="@+id/allreminders_list" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:dividerHeight="3px" android:cacheColorHint="#00000000"
android:divider="@color/trans" android:background="@drawable/reminderlist_background"
android:listSelector="@android:color/transparent"/>
Запись ListView:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"
android:id="@+id/entry_container">
<TextView android:id="@+id/remindername" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:text="dummy"
android:padding="15dp" android:layout_marginLeft="15px"
android:layout_marginRight="15px" style="@style/ReminderEntry"
android:clickable="true"/>
</RelativeLayout>
Программная настройка фона записи ListView:
if (position == 1)
textViewReminderName
.setBackgroundResource(R.drawable.reminder_entry_state_top);
else if (position == remindersInSection)
textViewReminderName
.setBackgroundResource(R.drawable.reminder_entry_state_bottom);
else
textViewReminderName
.setBackgroundResource(R.drawable.reminder_entry_state);
Список состояний для верхних элементов (R.drawable.reminder_entry_state_top):
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/rounded_top_corners_selected" />
<item android:state_selected="true" android:drawable="@drawable/rounded_top_corners_selected" />
<item android:drawable="@drawable/rounded_top_corners" />
Форма для невыбранныхглавные элементы (@ drawable / rounded_top_corners):
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/entry_background"/>
<corners android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp"
android:topLeftRadius="5dp" android:topRightRadius="5dp"/>
</shape>
Этот материал работает, функционально.НО, верхний и нижний элементы (которые имеют нарисованную форму в качестве фона, как показано выше) слегка меняют свой цвет при определенных условиях:
- После прокрутки списка вниз без остановки касания прокрутки
- После нажатия любого элемента в списке
Правильный цвет этих элементов отображается только тогда, когда я прокручиваю список, не убирая палец, до того, как прокрутка закончилась.
Что это может быть?Ошибка в способе представления StateListDrawables нарисованных фигур?