2011-02-07 13 views
5

Tengo una columna 3 GridView y 4 artículos.Centrar niños en un GridView

Ocurre que tres de ellos aparecen en la primera fila, y el último en la segunda fila, pero este alineado a la izquierda. Solo quería saber si es posible hacer que parezca centrado en el GridView. Como una 'T', no sé si me explico ... xD

Gracias :-)

Editar:

Ésta es la disposición 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

Solución Editar:

Este problema es del año pasado, pero se me ha pedido para publicar la solución y tuve que encontrar mi edad repo conseguirlo :-)

Como dije abajo en los comentarios, No pude lograrlo solo con XML, así que tuve que engañar a un elemento falso no clicable + no enfocable en la 3ª posición.

Era mi primera aplicación, así que no implementé la solución recomendada "ViewHolder". Recomiendo encarecidamente su uso

Así es como mi método getView() se ve como 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; 
    } 

Respuesta

1

puedes probar el siguiente código:

android:gravity="center_horizontal" 

en el xml.

+0

No funciona ... ¡gracias! –

+0

¿Puedes publicar tu xml? – Herter

+0

intente mirar por aquí .. http://developer.android.com/reference/android/widget/GridView.html#attr_android:gravity – Herter

0

Así resolví este problema. Establecí dinámicamente numcolumn cuando sé exactamente la columna.

<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());