Cómo hacer la primera imagen más grande en Gridlayout?

Para ser precisos quiero lograr esto. Introduzca aquí la descripción de la imagen

Estoy utilizando recyclerview con GridLayoutManager. También he hecho el primer artículo grande usando el código siguiente

lLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int i) { if (i==0) return 2; else return 1; } }); 

Todo funciona bien, excepto uno: El elemento en la posición 1 (es decir, el siguiente elemento de la imagen grande) se alarga verticalmente para que coincida con la altura del elemento grande. Desde la fila 3 todas las imágenes son como se muestra en la imagen.

Cómo puedo deshacerme de esto ?

Editar: Después de algunos análisis

Así que el problema parece ser que la imagen grande está tomando dos tramos horizontalmente, pero un solo tramo verticalmente y ya que he forzado mi ImageView a ser cuadrado, parece que también ha tomado dos filas donde como de hecho es una sola fila. Debido a esta razón, la segunda imagen parece alargada.

Así que ahora mi pregunta es, ¿cómo hacer que el elemento de la cuadrícula tome dos vanos verticalmente y dos vanos horizontalmente?

Intente utilizar StaggeredGridLayoutManager en lugar de GridLayoutManager . StaggeredGridLayoutManager soporta la disposición horizontal y vertical, así como una capacidad de disposición de los niños en sentido inverso. OnBindViewHolder método de adaptador que puede establecer span según la posición de su elemento utilizando este código

 final ViewGroup.LayoutParams lp = holder.itemView.getLayoutParams(); if (position == 0) { StaggeredGridLayoutManager.LayoutParams sglp = (StaggeredGridLayoutManager.LayoutParams) lp; sglp.setFullSpan(true); holder.itemView.setLayoutParams(sglp); } 

Encontrar el ejemplo http://enoent.fr/blog/2015/01/18/recyclerview-basics/ … espero que te ayude

Intente el código siguiente en la clase GridViewAdapter

 public class GridViewAdapter extends BaseAdapter { private Context context; private ArrayList<Integer> imageArrayList = new ArrayList<>(); private int type; public GridViewAdapter(Context context, ArrayList<Integer> imageArrayList) { this.context = context; this.imageArrayList = imageArrayList; } @Override public int getCount() { return imageArrayList.size(); } @Override public Object getItem(int position) { return imageArrayList.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = new ViewHolder(); if(convertView==null){ LayoutInflater inflater = LayoutInflater.from(context); type = getItemViewType(position); if(type==0) { convertView = inflater.inflate(R.layout.big_layout,parent,false); }else { convertView = inflater.inflate(R.layout.small_layout, parent, false); } viewHolder.imageView = convertView.findViewById(R.id.imageView); convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.imageView.setImageDrawable(context.getResources().getDrawable(imageArrayList.get(position))); return convertView; } @Override public int getViewTypeCount() { return super.getViewTypeCount(); } @Override public int getItemViewType(int position) { if(position==0) { return 0; }else{ return 1; } } private class ViewHolder{ ImageView imageView; } } 
  • La forma más sencilla de mostrar Cuerdas con iconos en un RecyclerView
  • Establecer margen en RecyclerView mediante programación
  • Los elementos no tienen el mismo ancho cuando se utiliza RecyclerView GridLayoutManager para establecer el espaciado de columnas por ItemDecoration
  • RecyclerView se desplaza automáticamente a WebView / Fresco Elemento SimpleDraweeView
  • Detectar cuando RecyclerView alcanza la posición más baja durante el desplazamiento
  • Práctica recomendada para eliminar asincrónicamente un elemento ListView / RecyclerView
  • El trabajo de CollapsingTolbar con fagment contiene SwipeRefreshLayout y RecycleView
  • Implementación diferente para un botón de acción flotante en cada fragmento de una actividad
  • RecyclerView onClick
  • Visualización de imágenes de almacenamiento en base a firebase en un RecyclerView
  • SwipeRefreshLayout sin animación en la creación de fragmentos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.