J'ai un GridView à l'intérieur d'un LinearLayout à l'intérieur d'un ScrollView qui pages dans les données du serveur. Sous le GridView est un bouton pour charger plus de données. Mon GridView aura une hauteur ultime qui est plus grande que l'écran. Si je mets la taille de ma GridView à wrap_content ou à parent_fill, elle se positionne elle-même à la hauteur exacte disponible à l'écran et ne défile pas du tout, remplaçant les lignes supplémentaires. Si je définis explicitement layout_height sur quelque chose de grand, comme 1000dip, le défilement se comporte correctement, mais je ne peux pas prédire la hauteur finale de ma vue de défilement a priori.Comment puis-je calculer la hauteur requise d'un GridView à l'intérieur d'un ScrollView sur Android?
Comment est-ce que je détermine par programme la taille nécessaire d'un GridView pour obtenir le comportement désiré?
Voici ma mise en page ci-dessous. Comme vous pouvez le voir, je régler la hauteur à 1000dip, mais qui est faux, j'ai besoin de cette valeur pour se régler automatiquement/programme:
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:layout_weight="1"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/grid"
android:layout_width="fill_parent"
android:layout_height="1000dip"
android:columnWidth="70dp"
android:numColumns="auto_fit"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:background="#000000"
android:layout_weight="1"
/>
<Button
android:id="@+id/load_more"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Load More Foo"
/>
</LinearLayout>
</ScrollView>
FYI J'ai effectivement écrit mon propre widget d'interface utilisateur similaire à GridView en utilisant ListViews, et ça marche très bien. – esilver