Elementos del centro en GridView
Tengo GridView con 6 imágenes en 2 columnas. Quiero mostrar estas 6 imágenes en el centro de la pantalla. Pongo las propiedades de la gravedad al centro, pero este centro elementos sólo horizontalmente. GridView toma toda la pantalla.
<GridView android:id="@+id/gridview" android:layout_above="@id/ad" android:layout_alignParentTop="true" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="2" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:background="#ffffff" android:gravity="center" />
- Android: muestra la implementación de la vista de cabecera de google
- Repetición de imagen mientras se desplaza en la vista de cuadrícula de Android con Universal Image Loader
- Android GridView OnItemLongClick escuchador llamado después de OnItemClick
- GridView con desplazamiento horizontal
- Cómo establecer el color de fondo de las celdas de gridview individuales
- Realizar onClickListener en ImageView en GridView
- Gridview - Haga clic en la imagen para ver la imagen en Viewpager
- GridView OnItemClickListener no está llamando a onItemClick
- BaseAdapter y ContextMenu
- Eliminar el espacio de borde alrededor de GridView
- ¿Cómo calculo la altura requerida de un GridView que está dentro de un ScrollView en Android?
- Android gridview se estrella en Galaxy 3
- Bloqueo de scroll de gridview
Aquí es lo que hice para obtener los elementos en la gridview al centro (observe el stretchmode, columnwidth, gravedad y espaciado horizontal y vertical):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="5dp" > <GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="100dp" android:gravity="center" android:horizontalSpacing="10dp" android:numColumns="3" android:stretchMode="spacingWidthUniform" android:verticalSpacing="10dp" /> </LinearLayout>
Me tomó un tiempo para averiguarlo, pero jugando con los diferentes valores que pude conseguir que el centro.
Intente envolver su GridView en un LinearLayout que tenga sus elementos secundarios centrados y cambie el layout_height de su gridview a "wrap_content". ex:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center" android:layout_gravity="center"> <GridView android:id="@+id/homeGridView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numColumns="3" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center" /> </LinearLayout>
Necesita establecer los siguientes atributos:
android:stretchMode="columnWidth"
…y…
android:gravity="center"
Así, en caso de que esté utilizando un adaptador personalizado para inflar un único rowview dentro de su gridview, a continuación, intente agregar android: gravedad = "centro" a la disposición de su single_row .. esto hará el truco espero 🙂 es decir,
<?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" > <ImageView android:id="@+id/ivClrBlock" android:layout_width="88dp" android:layout_height="88dp" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" /> <TextView android:id="@+id/tvClrName" android:layout_width="88dp" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:gravity="center" android:text="@string/color_name" android:textSize="15sp" /> </LinearLayout>
Intente cambiar esto:
android:layout_height="fill_parent"
dentro
android:layout_height="wrap_content"
Ahora está diciendo a su vista de cuadrícula que llene completamente la altura y el ancho de los padres.
Aquí está mi respuesta:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/linearLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" android:columnWidth="100dip" android:gravity="center" android:numColumns="3" android:stretchMode="spacingWidthUniform" android:verticalSpacing="10dip" /> </LinearLayout>
No utilice padding
ni horizontalSpacing
si no lo necesita ya que puede causar problemas con otras vistas.
Tenga en cuenta también que fill_parent
ya está obsoleto.
Espero que esto solucione su problema:
<LinearLayout android:layout_gravity="center_horizontal" android:gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <GridLayout android:id="@+id/gridlayou4x3" android:rowCount="4" android:columnCount="3" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="80" android:minWidth="25px" android:minHeight="25px" /> </LinearLayout>
Encontré que sólo tiene el contenido de gridlayout
en height
y width
.
android:layout_centerHorizontal="true"
Se centrará en sí mismo para el tamaño que necesita, pero si lo tiene que coinciden con el padre. Usted está centrándolo técnicamente basado en un montón de espacio vacío de los padres para compensar a sus hijos.
Se produjo un error cuando actualizé el adaptador gridview de:
gridView = inflater.inflate(R.layout.mobile, null);
a
gridView = inflater.inflate(R.layout.mobile, parent, false);
Así que sólo invertido de nuevo con un try catch si la versión anterior (nula) falló.
- Android sqlite – selecciona registros donde el campo es nulo o vacío
- Error de "no incluir instancia de tipo" al llamar al método de otra clase en Android