android - studio - recyclerview personalizado
Cómo superponer elementos en LinearLayoutManager-RecyclerView(como tarjetas apilables) (1)
¿Es posible superponer los elementos de RecyclerView?
Lo intento con LinearLayoutManager.
Mis requisitos son los mismos que en LinearLayoutManager y solo necesito superponer los elementos en el interior de arriba a abajo. (como apilar cartas)
He visto alguna variante usando ListView. Entonces, me imagino que sería posible en RecyclerView también. Pero, después de algunas veces de exploración, siento que tomará bastante tiempo implementar un administrador de diseño personalizado y un grado de entendimiento sobre esto. (Miré en la publicación de Dave sobre Building Custom LayoutManager )
Por lo tanto, ahora estoy pensando que podría necesitar usar la variación de ListView en función de mis requisitos en lugar de lidiar con esta gran complejidad del Custom Layout Manager.
Pero, solo necesito hacer que los elementos en el interior se superpongan. Siento que podría haber alguna otra dirección que aún no conozco. Por favor, avíseme si hay alguno aparte de la variante ListView anterior y el administrador de diseño personalizado.
También publicaré mis resultados a continuación aquí.
Supongo que estás buscando una superposición parcial (por ejemplo, un mazo de cartas ligeramente desplegado). Si es así, esto parece bastante simple con RecyclerView y una ItemDecoration personalizada. Aquí hay un ejemplo trivial de uno que superpone los elementos en 90px verticalmente:
public class OverlapDecoration extends RecyclerView.ItemDecoration {
private final static int vertOverlap = -90;
@Override
public void getItemOffsets (Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.set(0, vertOverlap, 0, 0);
}
}
Este ejemplo codifica el desplazamiento, pero si los elementos de la lista varían en altura, deberá medir y agregar lógica para esto.
Agregue esta decoración al RV antes de configurar el administrador de disposición. Lo he intentado con un StaggeredGrid, pero debería funcionar también con LinearLayout y Grid LM.