with cardview card actions android android-layout android-5.0-lollipop android-cardview

actions - cardview android shadow



Android-L CardView Visual Touch Feedback (4)

Aquí está mi solución. Utiliza ondas para lollipop + y primer plano estático para dispositivos pre-piruletas.

<android.support.v7.widget.CardView ... android:foreground="?android:attr/selectableItemBackground">

¿Alguien podría explicarme cómo implementar algunos de los comentarios táctiles visuales que se demostraron en Google I / O 2014 dentro de un CardView?

Así es como estoy usando CardView en XML, es probable que haya algo pequeño que me falta, así que solo me preguntaba si alguien podría ayudarme.

<!-- A CardView --> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/CardView_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" card_view:cardCornerRadius="4dp" android:elevation="2dp"> <LinearLayout android:id="@+id/LinearLayout_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:onClick="RunSomeMethod""> <!-- Main CardView Content In Here--> </LinearLayout> </android.support.v7.widget.CardView>


Esto ayudó en mi caso

Fondo:

CardView ignora android:background a favor de la app:cardBackground que solo puede ser de color. El borde y la sombra son, de hecho, parte del fondo, por lo que no puede configurar el suyo propio.

Solución:

Haga que el diseño dentro de CardView clic en lugar de la tarjeta en sí. Ya escribió los dos atributos necesarios para este diseño:

android:clickable="true" android:background="?android:selectableItemBackground"


Para dibujar la selección en pre-Lollipop y post-Lollipop correctamente, puede usar el siguiente enfoque (la idea es usar recuadro dibujable del selector con esquinas redondeadas para pre-Lollipop - la muestra a continuación usa colores personalizados, puede cambiarlos a los valores predeterminados) :

android:foreground="@drawable/card_foreground"

post-Lollipop

drawable-v21 / card_foreground.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#20000000" android:drawable="@drawable/card_foreground_selector" />

drawable-v21 / card_foreground_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="rectangle"> <solid android:color="#18000000"/> </shape> </item> <item android:state_focused="true" android:state_enabled="true"> <shape android:shape="rectangle"> <solid android:color="#0f000000"/> </shape> </item> </selector>

pre-Lollipop

drawable / card_foreground.xml (necesitará ajustar los valores insertados de acuerdo con la elevación de su tarjeta)

<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/card_foreground_selector" android:insetLeft="2dp" android:insetRight="2dp" android:insetTop="4dp" android:insetBottom="4dp"/>

drawable / card_foreground_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="rectangle"> <solid android:color="#18000000"/> <corners android:radius="@dimen/card_radius" /> </shape> </item> <item android:state_focused="true" android:state_enabled="true"> <shape android:shape="rectangle"> <solid android:color="#0f000000"/> <corners android:radius="@dimen/card_radius" /> </shape> </item> </selector>


API 11+ :

Agregue android:foreground="?android:attr/selectableItemBackground" a su elemento CardView .

API 9+ :

Agregue android:foreground="?selectableItemBackground" CardView android:foreground="?selectableItemBackground" a su elemento CardView .

Editar: La onda que se origina desde el centro y no desde el punto de contacto es un error conocido, y se ha solucionado .