una tablas tabla numero matriz llenar insertar imprimir extraer elementos crear como arreglo array android android-recyclerview gridlayoutmanager

android - tablas - numero de elementos de una matriz matlab



Cómo establecer la altura de una fila de elementos en GridLayoutManager (7)

Mi elemento de reciclador que se infla en onCreateViewHolder

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:padding="16dp"> <ImageView android:id="@+id/gridListImageView" android:layout_width="96dp" android:layout_height="96dp" android:src="@drawable/a" /> <TextView android:id="@+id/gridListView_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>

Quiero mostrar algo como esto. ¿Qué tiene una fila de la mitad de la altura de Recycler View? ¿Y añadir relleno al resto del espacio? ¿Puedo hacer esto por GridLayoutManager?

Y este es mi GridLayoutManager

GridLayoutManager glm = new GridLayoutManager(getActivity(), 2); recyclerView.setLayoutManager(glm);


A partir de la biblioteca de soporte 25.1.0, LA RESPUESTA ANTERIOR NO FUNCIONA. Sugiero las siguientes modificaciones:

public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); GridLayoutManager.LayoutParams lp = (GridLayoutManager.LayoutParams) v.getLayoutParams(); lp.height = parent.getMeasuredHeight() / 4; v.setLayoutParams(lp); return new ViewHolder(v); }


Al inflar el diseño para sus vistas en el adaptador, puede establecer su altura mediante programación. Para evaluar la altura adecuada para su uso, puede confiar en ViewGroup principal (que es el propio RecyclerView). Aquí es una muestra:

@Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = mLayoutInflater.inflate(R.layout.view_item, parent, false); // work here if you need to control height of your items // keep in mind that parent is RecyclerView in this case int height = parent.getMeasuredHeight() / 4; itemView.setMinimumHeight(height); return new ItemViewHolder(itemView); }

Espero que esto pueda ayudar.


En algún momento, se obtiene el tamaño de la vista de inflado en el adaptador de retorno 0 o negativo. otro enfoque es obtener el tamaño requerido desde fuera del adaptador, manipularlo y configurarlo a la vista. En mi caso, otro problema fue el tamaño establecido sin efecto. así que configuro el tamaño usando el parámetro de diseño

Aquí está configurando mi adaptador en actividad:

Display display = MainActivity.this.getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int y = size.y; y=(int)y/2; GridLayoutManager linearLayoutManager = new GridLayoutManager(MainActivity.this,2); recyclerView.setLayoutManager(linearLayoutManager); NewOrderAdapter newOrderAdapter=new NewOrderAdapter(MainActivity.this,arrayListname,arrayListimage,y); recyclerView.setAdapter(newOrderAdapter);

y establezco el tamaño de vista como este:

@Override public myviewholder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = inflator.inflate(R.layout.new_order_row, viewGroup, false); GridLayoutManager.LayoutParams params = (GridLayoutManager.LayoutParams) view.getLayoutParams(); params.height = ysize; view.setLayoutParams(params); myviewholder holder = new myviewholder(view); return holder; }

y no olvide establecer una altura para el diseño en su diseño para inicializar


En un nivel de API reciente, actualmente, la altura del reciclador en onCreateViewHolder está siempre vacía. Este fragmento de código sirve para establecer la altura después de invocar onMeasure de la vista del reciclador y establecer la altura correcta en la vista de lista inflada.

@Override public DataBindingViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) { // You may inflate your view here. parent.post(new Runnable() { @Override public void run() { int height = parent.getMeasuredHeight() / rows; View view = holder.getBinding().getRoot(); view.getLayoutParams().height = height; } }); return holder; }


Este es mi código para ajustar la altura del elemento de vista de reciclaje en función de la relación de aspecto real requerida.

@Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.adapter_offers, parent, false); int width = parent.getMeasuredWidth(); float height = (float) width / Config.ASPECT_RATIO;//(Width/Height) RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) itemView.getLayoutParams(); params.height = Math.round(height); itemView.setLayoutParams(params); return new MyViewHolder(itemView); }


No es necesario establecer la altura de un elemento. El problema aquí es que la imagen trata de llenar todo el espacio. Solo agrega android:adjustViewBounds="true" a tu ImageView y no agregará espacios en blanco


v.getLayoutParams().width = parent.getMeasuredWidth() / 2; v.getLayoutParams().height = parent.getMeasuredWidth() / 2;