我在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
当前丢失。
答案 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">