Centrar a los niños en un GridView
Tengo un GridView
3 columnas y 4 elementos.
Así que sucede que tres de ellos aparecen en la primera fila, y el último en la segunda fila, pero este alineado a la izquierda. Sólo quería saber si es posible hacer que aparezca centrado en el GridView
. Como un 'T', no sé si lo explico … xD
- Cómo obtener la posición de desplazamiento de GridView?
- Android: establece la vista de texto al hacer clic en el elemento
- ¿Cuál es la contraparte addFooterView para GridView?
- Cómo habilitar arrastrar y soltar en el elemento de GridView onClick ()
- Android GridView reordena elementos mediante Arrastrar y soltar
Gracias 🙂
Editar:
Este es el diseño que contiene el GridView
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/section_title_root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg_gd_home_grid"> <ImageView android:src="@drawable/home_grid_txori" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="40dip" android:layout_centerHorizontal="true"/> <GridView android:id="@+id/home_grid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:numColumns="3" android:drawSelectorOnTop="true" android:layout_marginBottom="30dip" android:layout_marginLeft="30dip" android:layout_marginRight="30dip" android:padding="5dip" android:listSelector="@android:color/transparent" android:background="@drawable/bg_home_grid_item" /> </RelativeLayout>
Por cierto, android:layout_centerHorizontal="true"
no funciona en GridView
Edición de la solución:
Este problema es de años pasados, pero me han pedido que publique la solución y tuve que encontrar mi viejo repo para conseguirlo 🙂
Como dije abajo en los comentarios, no pude lograrlo sólo usin XML, así que tuve que engañar un falso no-clicable + elemento no enfocable en la 3ª posición.
Era mi primera aplicación, así que no implementé la solución "ViewHolder" recomendada. Recomiendo encarecidamente su uso
Así es como se ve mi método getView () en el Adaptador:
public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = (RelativeLayout) mInflater.inflate( R.layout.home_grid_item, null); } /* In order to have 4th item centered in the 2nd row, we create an empty 3rd item */ if (position == 3) { convertView.setFocusable(false); convertView.setClickable(false); } else { ImageView imageView = (ImageView) convertView .findViewById(R.id.image); imageView.setImageResource(mThumbs[position]); TextView textView = (TextView) convertView.findViewById(R.id.title); textView.setText(mTitles[position]); } convertView.setTag(mTabTags[position]); return convertView; }
- Android Hexagon Grid
- Android OnClickListener no dispara en GridView (sólo 2.2)
- Vista de cuadrícula de Android Cambiar el número de columnas dependiendo de los datos
- Android gridview que ajusta al tamaño de la pantalla
- Android: ¿Cómo puedo eliminar un elemento de una vista de rejilla, teniendo los elementos restantes en orden aleatorio
- Borde de los elementos de gridview en android
- Android principiante: toque eventos en android gridview
- Android: ¿Cómo puedo acelerar el desplazamiento de GridView?
Puede probar el siguiente código:
android:gravity="center_horizontal"
En el xml.
Pruebe el siguiente código, si todavía desea hacerlo a través de XML
, aunque ya haya resuelto su problema.
android:layout_gravity="center_horizontal"
En lugar de usar android:gravity
, android:layout_gravity
se utiliza aquí.
Así es como resolví este problema. Me dinámicamente establecer numcolumn cuando sé la columna exactamente.
<GridView android:id="@+id/gr_single" android:verticalSpacing="@dimen/pay_mode_icon_margin" android:horizontalSpacing="@dimen/pay_mode_icon_margin" android:columnWidth="@dimen/pay_icon_width" android:gravity="center" android:stretchMode="columnWidth" android:layout_width="match_parent" android:layout_height="wrap_content"/>
En el java.
mGridView.setNumColumns(mSingleImageViews.size()); mGridView.setAdapter(new ImageAdapter());
- El tamaño de .apk está aumentando con el aumento con los dispositivos de destino (LDPI, MDPI, HDPI, Pantallas X-Large)
- Creación de una imagen de un teléfono Android