如何在点击时产生涟漪,在选定的Cardview中产生另一个前景?

时间:2019-01-25 22:19:53

标签: android cardview rippledrawable

我在CardView中有多个ListView。可以单击并选择这些卡片视图。单击后,我要显示一个ripple。选中后,我要更改foreground。目前是两部作品之一。如何使它们同时工作?

我尝试了各种不同的版本。有掩码且无掩码,设置所有状态且只有一个。问题在于可能有4种结果。

1:未显示任何内容
2:仅显示波纹
3:选择Cardview后,只有前景会改变颜色
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 :(得分:0)

尝试如何:

clickable = true

?android:attr / 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">