J'ai une mise en page simple avec un nom en haut et un bouton que je veux être en bas de l'écran, ou au-delà au cas où j'ajouterais d'autres éléments.
J'utilise donc un ScrollView avec un LinearLayout comme suit:
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@Android:color/white"
Android:fillViewport="true"
Android:focusableInTouchMode="true"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
tools:context=".ItemDetailActivity" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical" >
<!-- Name -->
<RelativeLayout
Android:id="@+id/top_content"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="top" >
<TextView
Android:id="@+id/name_label"
style="@style/Header_Label_TextView"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="@string/name" />
<TextView
Android:id="@+id/name_value"
style="@style/Value_Label_TextView"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_below="@id/name_label" />
</RelativeLayout>
<!-- button -->
<RelativeLayout
Android:id="@+id/ButtonLayout"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="bottom" >
<Button
Android:id="@+id/add_button"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10sp"
Android:onClick="editItem"
Android:text="@string/button_edit" />
</RelativeLayout>
<requestFocus />
</LinearLayout>
Voici ce que j'obtiens:
Comment puis-je faire en sorte que le bouton apparaisse en bas de l'écran ou au-delà. Lors de la recherche en ligne, la plupart des réponses consistaient à définir `Android: fillViewport =" true ", mais cela n'aide pas. Qu'est-ce que je fais mal?
Modifiez la disposition de vos boutons comme ceci:
<RelativeLayout
Android:id="@+id/ButtonLayout"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:gravity="bottom" >
<Button
Android:id="@+id/add_button"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10sp"
Android:onClick="editItem"
Android:layout_alignParentBottom="true"
Android:text="@string/button_edit" />
</RelativeLayout>
Cela devrait fonctionner -
layout_alignParentBottom = true
pour le bouton.Exemple XML
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@Android:color/white"
Android:fillViewport="true"
Android:focusableInTouchMode="true"
Android:paddingBottom="@dimen/activity_vertical_margin"
Android:paddingLeft="@dimen/activity_horizontal_margin"
Android:paddingRight="@dimen/activity_horizontal_margin"
tools:context=".ItemDetailActivity" >
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<!-- Name -->
<RelativeLayout
Android:id="@+id/top_content"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="top" >
<TextView
Android:id="@+id/name_label"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Name" />
<TextView
Android:id="@+id/name_value"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_below="@id/name_label" />
</RelativeLayout>
<!-- button -->
<RelativeLayout
Android:id="@+id/ButtonLayout"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true" >
<Button
Android:id="@+id/add_button"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10sp"
Android:onClick="editItem"
Android:text="Edit" />
</RelativeLayout>
</RelativeLayout>
</ScrollView>
En mode défilement, utilisez RelativeLayout au lieu de LinearLayout et définissez votre propriété de vue inférieure
Android:layout_alignParentBottom="true"
Si vous utilisez LinearLayout (qui est plus performant que RelativeLayout), vous devez définir Android:gravity="bottom"
& Android:layout_height="match_parent"
comme ça:
<LinearLayout
Android:id="@+id/ButtonLayout"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:gravity="bottom" >
<Button
Android:id="@+id/add_button"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10sp"
Android:onClick="editItem"
Android:text="@string/button_edit" />
</LinearLayout>
Référence: https://demonuts.com/Android-fillviewport/