¿Cómo obtener información sobre el toque de RecyclerView?
Implementé un ReceylerView y no puedo averiguar cómo obtener retroalimentación de tacto (el efecto de rizo de él).
Aquí es lo que hice para el onClickListener:
- No contraer la barra de herramientas cuando RecyclerView se ajusta a la pantalla
- Los fragmentos ViewPager hacen referencia al mismo RecyclerView y / o Adapter
- StaggeredGridLayoutManager y elementos en movimiento
- RecyclerView con LinearLayoutManager con vista de encabezado que no recicla
- App fallando al intentar usar RecyclerView en android 5.0
holder.itemView.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //start Intent } });
Y he añadido tanto clickable y focusable a mi XML. Esto es lo que la vista del reciclador se infla:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:focusable="true" android:padding="4dp" >
- El desplazamiento de ViewPager no funciona con RecyclerView
- RecyclerView no se desplaza como se esperaba
- Detectar cuando RecyclerView alcanza la posición más baja durante el desplazamiento
- Android 5.0 - Agregar cabecera / pie de página a un RecyclerView
- Cómo establecer la altura de una fila de elementos en GridLayoutManager
- Animación de RecyclerView en el clic de artículo
- Vista colapsada / expansible coordinada con RecyclerView deslizante
- Bloc de vista de reciclador y problema de repetición
Usted tiene que fijar una ondulación dibujable como fondo:
android:background="@drawable/ripple"
Ripple.xml:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#ffa0a0a0"/>
Es posible que deba enmascarar el dibujable:
<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#ffa0a0a0"> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="#ffa0a0a0"/> </shape> </item> </ripple>
Esto creará una ondulación gris simple al tocar (aquí hay una guía si necesita más instrucciones).
RippleDrawable se agregó en SDK versión 21 (Lollipop). El uso de Ripple drawable en pre-lollipop bloqueará la aplicación. Utilice un selector simple en dispositivos pre-piruletas o utilice bibliotecas que recreen el efecto. ( GitHub )
ACTUALIZACIÓN: Usted puede conseguir el efecto de la ondulación fácilmente con este pedazo de código:
android:background="?attr/selectableItemBackground"
O si no desea la máscara de rectángulo:
android:background="?attr/selectableItemBackgroundBorderless"
Esto es compatible con los dispositivos pre-lollipop y nos va un selector simple. Creo que esto creará ondulaciones ligeras en aplicaciones con tema oscuro y viceversa, por lo que si desea una ondulación personalizada de color que todavía tendrá que crear una ondulación dibujable.
Además de la respuesta de @ Longi: Si quieres que tu Elemento de RecyclerViews tenga su propio fondo y al mismo tiempo tenga el efecto de ondulación, puedes hacerlo como se muestra en el ejemplo siguiente: recycler_view_item.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/recyclerview_item_background"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="?attr/selectableItemBackgroundBorderless"> ... </LinearLayout> </LinearLayout>
En este ejemplo @ drawable / recyclerview_item_background es un png de nueve parches, pero puede utilizar cualquier fondo aquí.
En mi caso cuando utilicé android: background = "? Attr / selectableItemBackground" , el diseño lineal de la raíz del elemento de RecyclerView tenía el efecto ripple, pero el fondo de Linear Layout del niño se superponía ocultando así el efecto ripple.
- ¿Cómo cambiar el color del botón de conmutación?
- Es posible poner un TextView dentro de un grupo de radio. Pero, ¿es una buena práctica?