Comment définir la hauteur de la cellule GridView en fonction de la hauteur de l'écran?

Dans ma mise en page, j'ai seulement huit cellules.
Je veux que la cellule divise tout l'espace disponible sur l'écran. Est-ce possible?

Voici ma disposition de gridview:

<GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dataGrid" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10px" android:verticalSpacing="10px" android:horizontalSpacing="10px" android:numColumns="2" android:gravity="fill" /> 

Et c'est la disposition des éléments:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="6dip" > <TableRow android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="#E00000" android:textStyle="bold" android:gravity="left" android:textSize="16dip"/> <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="#000000" android:textStyle="normal" android:gravity="right" android:textSize="12dip"/> </LinearLayout> </TableRow> </LinearLayout> 

3 Solutions collect form web for “Comment définir la hauteur de la cellule GridView en fonction de la hauteur de l'écran?”

Malheureusement, GridView est une disposition délicate à manipuler pour obtenir des vues internes pour s'adapter à une taille spécifique telle que vous essayez. Je pense qu'il est plus approprié de penser à GridView tant que ListView avancé pour afficher des listes défilables de longueur variable comme des miniatures dans un album photo, par opposition à une "grille". J'ai commencé cette route lorsque j'avais l'intention de faire une grille de taille fixe pour un jeu, mais ce n'est vraiment pas une disposition appropriée pour cela.

Étant donné que votre grille est toujours 8 cellules, puis-je suggérer d'utiliser LinearLayout imbriqué s (ou si vous ne voulez pas toutes les cellules exactement de la même taille, le TableLayout / TableRow plus complexe à la place:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:weightSum="1.0" > <LinearLayout android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0.5" android:orientation="horizontal" android:weightSum="1.0" > <!-- Drop in 4 items here with layout_weight of 0.25 --> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0.5" android:orientation="horizontal" android:weightSum="1.0" > <!-- Drop in 4 items here with layout weight of 0.25 --> </LinearLayout > </LinearLayout > 

Cela constituerait une grille 2×4 fixe qui remplit exactement l'écran.

Tout d'abord, utilisez PS au lieu de PX. Cela permettra de l'étendre à différents appareils DPI.

Deuxièmement, pour que chaque cellule soit égale, vous pouvez placer une tableView dans chaque cellule contenant une image claire. Définissez la taille de l'image avec PS (pas px). La vue de la table devrait vous permettre de calquer les objets de disposition dans chaque cellule et le graphique clair devrait garder toutes les cellules de la même taille.

Je supprimerais également tout rembourrage.

Laissez nous savoir.

Vous devriez essayer [android: stretchMode] [1]

[1]: http://developer.android.com/reference/android/widget/GridView.html#attr_android:stretchMode : définit comment les colonnes doivent s'étendre pour remplir l'espace vide disponible, le cas échéant.

coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.