Définir la hauteur de ligne GridView fixe

Je vais avoir toutes sortes de problèmes avec des hauteurs de ligne dans GridView.

Je voudrais configurer la taille des éléments (hauteur/largeur) en XML et puis juste avoir le contrôle GridView ajuster autant que possible avec les sans étirement. Si elle ne peut pas tenir l'élément suivant il devrait ajouter rembourrage autour de l'actuelle nombre d'éléments qu'il a été en mesure de s'adapter.

Actuellement je reçois les 2 colonnes (qui me semble de taille fixe) et les lignes être étirée. Quelqu'un pourrait-il aider s'il vous plaît expliquer ce qui se passe et comment obtenir ce que je veux?

GridView:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/main_grid"
    android:numColumns="auto_fit"
    android:gravity="center"
    android:paddingRight="20dp"
    android:paddingLeft="20dp"
    android:clipToPadding="true"
    android:fitsSystemWindows="true"
    android:stretchMode="none"
    android:background="@drawable/main_grid_background">

</GridView>

GridItem (je veux qu'il 320x320 que plus tard, j'ai insérer une image de fond dans ce qui semble étrange, si ce n'est pas un carré parfait).

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="320dp"
    android:layout_height="320dp"
    android:padding="10dp" >

    <TextView
        android:id="@+id/grid_item_label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="@+id/label"
        android:layout_marginTop="5dp"
        android:textColor="@color/black"
        android:textSize="15sp"
        android:visibility="invisible"
        android:layout_centerInParent="true" >
    </TextView>

</RelativeLayout>

Java:

public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View gridView;

        if (convertView == null) {

            gridView = new View(context);

            //get layout from mobile.xml
            gridView = inflater.inflate(R.layout.main_grid_item, null);

        } else {
            gridView = (View) convertView;
        }
        TextView textView = (TextView) gridView
                .findViewById(R.id.grid_item_label);

            //SET TEXT AND BACKGROUND IMAGE HERE
            //gridView.setBackgroundResource(R.drawable.main_grid_item_import);



        return gridView;
    }

source d'informationauteur AlexIIP