Estoy tratando de obtener un CardView para mostrar el efecto dominó cuando lo toco configurando el atributo android: backgound en el archivo XML de actividad como se describe aquí en la página de Desarrolladores de Android, pero no funciona. No hay animación en absoluto, pero se llama al método en onClick. También he intentado crear un archivo ripple.xml como se sugiere aquí , pero el mismo resultado.
CardView como aparece en el archivo XML de la actividad:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="155dp"
android:layout_height="230dp"
android:elevation="4dp"
android:translationZ="5dp"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:onClick="showNotices"
android:background="?android:attr/selectableItemBackground"
android:id="@+id/notices_card"
card_view:cardCornerRadius="2dp">
</android.support.v7.widget.CardView>
Soy relativamente nuevo en el desarrollo de Android, por lo que podría haber cometido algunos errores obvios.
android
android-layout
android-5.0-lollipop
android-cardview
AkraticCritic
fuente
fuente
?android:attr/selectableItemBackground
requiere API nivel 11android:clickable="true"
.Agregue estos dos códigos de línea en su vista xml para obtener un efecto dominó en su cardView.
fuente
foreground
Funciona con vistas de fondo personalizadas como un encanto! ¡Agradable!Logré obtener el efecto dominó en la vista de tarjeta:
y para el custom_bg que puede ver en el código anterior, debe definir un archivo xml para dispositivos lollipop (en el paquete drawable-v21) y pre-lollipop (en el paquete dibujable). para custom_bg en el paquete drawable-v21, el código es:
para custom_bg en el paquete dibujable, el código es:
entonces, en los dispositivos pre-lollipop, tendrá un efecto de clic sólido y en los dispositivos lollipop tendrá un efecto dominó en la vista de la tarjeta.
fuente
El efecto dominó se omitió en la biblioteca de soporte de appcompat, que es lo que está utilizando. Si desea ver la onda, use la versión Android L y pruébela en un dispositivo Android L. Por el sitio AppCompat v7:
"¿Por qué no hay ondas en pre-Lollipop? Mucho de lo que permite que RippleDrawable funcione sin problemas es el nuevo RenderThread de Android 5.0. Para optimizar el rendimiento en versiones anteriores de Android, hemos dejado RippleDrawable fuera por ahora".
Mira este enlace aquí para más información
fuente
Si la aplicación con la
minSdkVersion
que está trabajando es de nivel 9, puede usar:En cambio, a partir del nivel 11, usa:
De la documentación:
fuente
Para mí, agregar el
foreground
aCardView
no funcionaba (razón desconocida: /)Agregar el mismo diseño secundario hizo el truco.
CÓDIGO:
fuente
Agregue estos dos tipos de código como un hechizo para cualquier vista como Button, Linear Layout o CardView Simplemente coloque estas dos líneas y vea la magia ...
fuente
Si hay un diseño raíz como RelativeLayout o LinearLayout que contiene todos los componentes del elemento del adaptador en CardView, debe establecer el atributo de fondo en ese diseño raíz. me gusta:
fuente
Evento de ondulación para el
Cardview
control de Android :fuente
No estaba contento con AppCompat, así que escribí mi propio CardView y mis ondas con backport. Aquí se ejecuta en Galaxy S con Gingerbread, por lo que definitivamente es posible.
Para más detalles verifique el código fuente .
fuente
Agregue lo siguiente a su xml:
Y agregue a su adaptador (si es su caso)
fuente
Para aquellos que buscan una solución al problema del efecto dominó que no funciona en un CardView creado mediante programación (o en mi caso, una vista personalizada que extiende CardView) que se muestra en un RecyclerView, lo siguiente funcionó para mí. Básicamente, declarar los atributos XML mencionados en las otras respuestas declarativamente en el archivo de diseño XML no parece funcionar para un CardView creado mediante programación, o uno creado a partir de un diseño personalizado (incluso si la vista raíz es CardView o se usa un elemento de fusión) tienen que establecerse mediante programación de la siguiente manera:
Donde
MadeupCardView extends CardView
Felicitaciones a esta respuesta por laTypedArray
parte.fuente
Solo funciona la API 21 y use esto, no use esta vista de tarjeta de fila de lista
fuente
Utilice Material Cardview en su lugar, extiende Cardview y proporciona múltiples funciones nuevas, incluido el efecto de clic predeterminado:
Dependencia
fuente