Как я могу иметь пульсации на клике и другой передний план на выбранном просмотре карты?

У меня есть несколько 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 в настоящее время отсутствует.

1 ответ

Как насчет попытки:

clickable = true

? андроид: атр /selectableItemBackground

Чтобы эффект ряби был применен к фону при использовании переднего плана для изменения цвета после выбора элемента?

<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:clickable="true"
    android:background="?android:attr/selectableItemBackground"
    android:foreground="@drawable/card_foreground_selector">
Другие вопросы по тегам