J'ai un RelativeLayout qui comprend trois éléments: un TableLayout en haut qui contient des contrôles (layout_alignParentTop = true), un LinearLayout en bas (layout_alignParentBottom = true) qui contient quelques boutons et un ListView qui s'étire entre eux (en utilisant layout_below et layout_above les deux éléments). Cela fonctionne très bien, mais dans certaines circonstances, le fond LinearLayout doit disparaître. Si j'utilise setVisibility pour le définir sur View.GONE ou pour définir sa hauteur à 0 à l'aide de setLayoutParams(), ListView refuse obstinément de redimensionner pour occuper l'espace nouvellement libéré. J'ai essayé d'appeler requestLayout() sur pratiquement tout dans la hiérarchie, et rien ne semble fonctionner. Si je lance la visionneuse de la hiérarchie, je peux voir que la vue a disparu/a layout_height de 0, mais cela ne fonctionne toujours pas. Ironiquement, une fois la visionneuse de la hiérarchie terminée, la mise en page se corrige elle-même. Je pense que le fait que mes utilisateurs lancent une visionneuse hiérarchique est probablement inacceptable.Android: Réglage de la hauteur de vue à 0
EDIT: La mise en page du milieu est en fait un RelativeLayout contenant le ListView, ce qui pourrait importer, je vais essayer de l'éliminer. J'ai posté une version simplifiée de mon XML qui donne une idée de ce que je regarde.
<RelativeLayout
android:id="@+id/main_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/top_table"
android:layout_alignParentTop="true"
android:stretchColumns="2"
android:shrinkColumns="1">
<!-- removed for simplicity -->
</TableLayout>
<RelativeLayout
android:id="@+id/main_content"
android:descendantFocusability="afterDescendants"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@id/title_table"
android:layout_above="@id/ad_toolbar">
<!-- removed for simplicity -->
<ListView
android:id="@+id/android:list"
android:layout_alignParentTop="true"
android:descendantFocusability="afterDescendants"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
<LinearLayout
android:id="@+id/bottom_layout"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content"
android:layout_width="fill_parent">
<!-- removed for simplicity -->
</LinearLayout>
</RelativeLayout>
pouvez-vous poster le .xml de la mise en page? –
Le XML actuel est assez compliqué, car la mise en page est composée de quelques fichiers de mise en page qui sont utilisés par différentes activités, mais j'ai posté une version simplifiée ci-dessus. Et j'ai réalisé que la région du milieu est en fait un RelativeLayout qui contient le ListView, ce qui pourrait faire une différence, je vais essayer de l'éliminer. – jjb