Я определил рисоваемость и задал ее как фон для фона списка элементов списка. Он почти отлично работает, но эффект пульсации иногда не появляется при нажатии.
Вот код для тиражирования пульсаций:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item>
<selector>
<item android:state_activated="true">
<shape><solid android:color="?android:attr/colorButtonNormal"/>
</shape>
</item>
<item>
<shape><solid android:color="@android:color/transparent"/>
</shape>
</item>
</selector>
</item>
</ripple>
И у меня есть ящик для навигации, который использует этот чертеж в качестве фона для элементов ящика:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/navigation_menu_height"
android:orientation="horizontal"
android:background="@drawable/listItemBackground">
....
</RelativeLayout>
Однако каждый раз, когда я открываю приложение, выбранный по умолчанию элемент не показывает эффект ряби, когда я нажимаю его. Но после того, как я выберу другой элемент, а затем снова его выберем, все будет хорошо.
Я использую точно то же самое для другого почти такого же ListView, за исключением того, что режим выбора несколько. И на этот раз элементы не будут показывать эффект пульсации при нажатии, пока они будут выбраны.
В другом спискеView, который не указывает режим выбора, только первый элемент показывает эффект пульсации, а другие ведут себя так же, как и в более ранних версиях Android.
Я действительно не знаю, как я могу заставить его работать для всех сценариев. возможно, действительно ли это относится к режиму выбора ListView?
==== ИЗМЕНИТЬ ====
Я просто добавил свойство drawSelectorOnTop для всех этих трех listViews, и теперь первые две проблемы очищаются. Однако для третьего он теперь выглядит следующим образом:
Эффект пульсации хорош для всех предметов, кроме первого, который показывает две ряби! Один из них начинается с того, где мой палец нажимает, а другой всегда начинается с середины!
==== ИЗМЕНИТЬ СНОВА ==== Хорошо, теперь я настраиваю drawable, чтобы переместить активированный статус за пределы пульсации node вместе с атрибутом drawSelectorOnTop для списка, проблема теперь полностью исчезла.