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

У меня есть несколько 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 Ответ

0 голосов
/ 26 января 2019

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

clickable = true

Android: атр / 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">
...