У меня есть несколько CardView
в ListView
. Эти карточки можно щелкнуть и выбрать. При нажатии я хочу отобразить ripple
. Когда выбрано, я хочу изменить foreground
. На данный момент одна из двух работ. Как я могу заставить их работать одновременно?
Я пробовал разные версии. С маской и без, настройка всех состояний и только одно. Проблема в том, что возможны 4 результата.
1: ничего не отображается
2: показана только пульсация
3: только цвет переднего плана меняет цвет после выбора карты
4: пульсация отображается, но передний план меняет цвет даже при нажатии и не изменяется обратно, когда он не выбран.
ListView
пункт:
<android.support.v7.widget.CardView
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="280dp"
app:cardElevation="4dp"
app:cardCornerRadius="4dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:foreground="@drawable/rowselector"
>
Файл rowselector.xml:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#20000000">
<item android:drawable="@drawable/card_foreground_selector" />
</ripple>
файл card_foreground_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape android:shape="rectangle">
<solid android:color="#aae3f7ee" />
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="rectangle">
<solid android:color="#aae3f7ee" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#00000000" />
</shape>
</item>
</selector>
Я думал, что при нажатии будет отображаться пульсация и другой цвет foreground
, когда CardView
долго нажимается / выбирается. ripple
в настоящее время отсутствует.