J'ai un certain problème dans mon activité. ScrollView ne défile pas vers le bas.
J'ai une capture d'écran pour vous.
Si vous regardez la barre de défilement de scrollView, vous pouvez voir qu’elle ne défile pas vers le bas.
Voici ma mise en page XML du scrollView:
<ScrollView
Android:id="@+id/scrollView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentBottom="true"
Android:layout_alignParentLeft="true"
Android:layout_alignParentRight="true"
Android:fillViewport="true"
Android:layout_below="@+id/step2_header" >
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="10dp" >
<TextView
Android:id="@+id/step2_headerText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentLeft="true"
Android:layout_alignParentTop="true"
Android:layout_alignParentRight="true"
Android:gravity="center"
Android:text="@string/Schritt2"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="@color/dark_blue"
Android:textStyle="bold|italic" />
<ImageView
Android:id="@+id/step2_image"
Android:layout_width="wrap_content"
Android:layout_height="100dp"
Android:layout_below="@+id/step2_headerText"
Android:layout_alignParentLeft="true"
Android:layout_alignParentRight="true"
Android:layout_marginTop="10dp"
Android:src="@drawable/menu_leiste" />
<TextView
Android:id="@+id/step2_infoText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="10dp"
Android:layout_alignParentLeft="true"
Android:layout_below="@+id/step2_image"
Android:text="@string/step2Text"
Android:textAppearance="?android:attr/textAppearanceSmall" />
<ImageView
Android:id="@+id/step2_but1Img"
Android:layout_width="match_parent"
Android:layout_height="35dp"
Android:layout_below="@+id/step2_infoText"
Android:layout_marginTop="10dp"
Android:src="@drawable/menu_leiste_selector" />
<TextView
Android:id="@+id/step2_but1Text"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBottom="@+id/step2_but1Img"
Android:layout_alignParentLeft="true"
Android:layout_alignTop="@+id/step2_but1Img"
Android:layout_marginLeft="10dp"
Android:gravity="center"
Android:text="@string/step2But1Text"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="@color/white" />
<ImageView
Android:id="@+id/step2_but1ArrowImg"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="3dp"
Android:layout_alignBottom="@+id/step2_but1Img"
Android:layout_alignParentRight="true"
Android:layout_alignTop="@+id/step2_but1Img"
Android:src="@drawable/location_web_site" />
<ImageView
Android:id="@+id/step2_but2Img"
Android:layout_width="match_parent"
Android:layout_height="35dp"
Android:layout_below="@+id/step2_but1Img"
Android:layout_marginTop="10dp"
Android:src="@drawable/menu_leiste_selector" />
<TextView
Android:id="@+id/step2_but2Text"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignBottom="@+id/step2_but2Img"
Android:layout_alignParentLeft="true"
Android:layout_alignTop="@+id/step2_but2Img"
Android:layout_marginLeft="10dp"
Android:gravity="center"
Android:text="@string/step2But2Text"
Android:textAppearance="?android:attr/textAppearanceMedium"
Android:textColor="@color/white" />
<ImageView
Android:id="@+id/step2_but2ArrowImg"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="3dp"
Android:layout_alignBottom="@+id/step2_but2Img"
Android:layout_alignParentRight="true"
Android:layout_alignTop="@+id/step2_but2Img"
Android:src="@drawable/location_web_site" />
</RelativeLayout>
</ScrollView>
Comment puis-je le réparer?
Le problème est Android: layout_margin = "10dp" dans RelativeLayout of SrcollView
Remplacer
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="10dp">
avec
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:padding="10dp" >
utiliser dans scrollView xml
Android:paddingBottom="10dp"
ça va décaler le contenu de la vue de défilement de 10 dp vers le haut, pas la vue.
Pour moi, j'ai une autre solution spécifique si la disposition parent de ScrollView est ConstrantLayout. Si c'est le cas, il n'est pas nécessaire de définir le remplissage ou la marge.
<androidx.constraintlayout.widget.ConstraintLayout
....>
<ScrollView
Android:layout_width="match_parent"
Android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="<if there is any element before this this scrollview >">
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content" >
Pour moi, définir explicitement la hauteur de certains de mes éléments internes m'a aidé.