Haga clic en un elemento de la lista RecyclerView
Tengo un RecyclerView
con un LinearLayoutManager
y un Adapter
:
@Override public int getItemViewType(int position) { return position == 0? R.layout.header : R.layout.item; }
Aquí está header.xml
:
- ANDROID: Múltiples vistas de tarjeta dentro de la vista de reciclador
- RecyclerView está cortando el último elemento
- Animación de RecyclerView en el clic de artículo
- (Smooth) ScrollToPosition no funciona correctamente con RecyclerView
- La vista horizontal del reciclador no muestra nada
<View xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/header" android:layout_width="match_parent" android:layout_height="@dimen/header_height" />
Lo que quiero lograr es tener un agujero en el RecyclerView
donde puedo hacer clic a cualquier cosa detrás del RecyclerView
. He probado muchas combinaciones de los siguientes atributos sin éxito:
android:background="@android:color/transparent" android:background="@null" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false" android:longClickable="false"
¿Cómo puedo hacer que el primer elemento sea transparente (permitiendo eventos táctiles a algo detrás de él) en la lista, pero que todavía ocupe el espacio?
- Detectar acabado de animación en RecyclerView de Android
- Obtener las últimas publicaciones / datos de firebase con límite de 10 registros en android y poblar en Listview
- Personalizar RecyclerView LayoutManager no fling (sin problemas)
- Las vistas devuelven NullPointerException en onBindViewHolder en RecyclerView Adapter
- RecyclerView no se desplaza como se esperaba
- Cómo puedo crear un diseño nestedScroll como este?
- Horizontal RecyclerView dentro de ListView sin desplazamiento muy suave
- ¿Qué es la contraparte de RecyclerView.Adapter de ListView.Adpater.isEnabled ()
Usted podría fijar OnClickListener
/ OnTouchListener
de todos sus "agujeros" al padre de la visión detrás del RecyclerView
y delegar cualquier de los eventos de MotionEvent
y del tacto a ese manejo del tacto del padre ViewGroup
.
Actualización por TWiStErRob:
class HeaderViewHolder extends RecyclerView.ViewHolder { public HeaderViewHolder(View view) { super(view); view.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // http://stackoverflow.com/questions/8121491/is-it-possible-to-add-a-scrollable-textview-to-a-listview v.getParent().requestDisallowInterceptTouchEvent(true); // needed for complex gestures // simple tap works without the above line as well return behindView.dispatchTouchEvent(event); // onTouchEvent won't work } });
No hay nada especial necesario en el XML, simplemente vistas simples (ninguno de los atributos en la pregunta). v.getParent()
es el RecyclerView
y ese método largo lo impide iniciar un gesto de desplazamiento mientras sostiene su dedo en el "agujero".
Mi vista "agujero" en la lista también tiene un fondo semitransparente, pero eso no importa porque estamos entregando los toques.
- Descubra la velocidad del usuario en android Utilizando GPS
- Establecer el margen negativo en la vista programáticamente