J'essaye d'afficher 8 éléments dans une grille. Malheureusement, la hauteur de la vue de la grille est toujours trop petite, de sorte qu'elle ne montre que la première ligne et une petite partie de la seconde.
Le réglage le android:layout_height="300dp"
fait fonctionner. wrap_ content
etfill_parent
apparemment pas.
Ma vue grille:
<GridView
android:id="@+id/myId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:horizontalSpacing="2dp"
android:isScrollContainer="false"
android:numColumns="4"
android:stretchMode="columnWidth"
android:verticalSpacing="20dp" />
Ma ressource d'articles:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:minHeight="?android:attr/listPreferredItemHeight" >
<ImageView
android:id="@+id/appItemIcon"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_dialog_info"
android:scaleType="center" />
<TextView
android:id="@+id/appItemText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My long application name"
android:gravity="center_horizontal"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
Le problème ne semble pas lié à un manque d'espace vertical.
Que puis-je faire ?
Réponses:
Après (trop) de recherches, je suis tombé sur l'excellente réponse de Neil Traft .
Adapter son travail pour le
GridView
a été extrêmement facile.ExpandableHeightGridView.java:
Incluez-le dans votre mise en page comme ceci:
Enfin, il vous suffit de lui demander de s'étendre:
la source
Après avoir utilisé la réponse de @tacone et m'être assuré que cela fonctionnait, j'ai décidé d'essayer de raccourcir le code. C'est mon résultat. PS: C'est l'équivalent d'avoir la réponse booléenne "développée" dans les tacones toujours mise à true.
la source
Une autre approche similaire qui a fonctionné pour moi consiste à calculer la hauteur d'une ligne, puis avec des données statiques (vous pouvez l'adapter à la pagination), vous pouvez calculer le nombre de lignes que vous avez et redimensionner facilement la hauteur de GridView.
Utilisez ce code après avoir défini l'adaptateur et lorsque le GridView est dessiné ou vous obtiendrez height = 0.
la source
int rows = items / columns + 1;
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
Les tacones trouvés répondent utiles ... alors je l'ai porté en C # (Xamarin)
la source
Calculez simplement la hauteur pour AT_MOST et réglez sur mesure. Ici, GridView Scroll ne fonctionnera pas ainsi. Besoin d'utiliser explicitement la vue de défilement vertical.
la source