Diferentes elementos (dinámicos) de altura en GridLayoutManager

Tengo un RecyclerView y GridLayoutManager con 2 columnas. ¿Cómo puedo obligar a LayoutManager a estar de acuerdo con la plantilla en la primera captura de pantalla? Ahora tengo el resultado como en la 2 ª captura de pantalla.

Resultado de la necesidad:

Resultado actual:

GridLayoutManager utilizará una cuadrícula, y puede establecer un cierto span, pero no diferentes alturas para diferentes celdas.

Lo que quieres es un StaggeredGridLayoutManager . Esto sólo pondrá los elementos en la pantalla si encajan, dando lugar a su resultado necesario. También puede cambiar el comportamiento de reordenación, si lo desea, utilizando setGapStrategy .

Es muy fácil. Tienes que agregar este gestor a RecycleView:

 recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1)); 

En mi caso es así:

 Context context = view.getContext(); RecyclerView recyclerView = (RecyclerView) view; if (mColumnCount <= 1) { recyclerView.setLayoutManager(new LinearLayoutManager(context)); } else { recyclerView.setLayoutManager(new StaggeredGridLayoutManager(mColumnCount, 1)); } recyclerView.setAdapter(new MyItemRecyclerViewAdapter(DummyContent.ITEMS, mListener)); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.