我在ListView
中有多个CardView
。可以单击并选择这些卡片视图。单击时,我想显示一个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"
>
行选择器.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>
我以为这在按下时会显示波纹,当长时间按下/选择CardView
时会显示不同的foreground
颜色。ripple
目前丢失。
试试看怎么样:
可点击 = 真
?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">