web-dev-qa-db-fra.com

Scrollview ne défile pas vers la marge en bas

J'ai une mise en page simple comme suit:

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="#D23456" >

    <LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="10dp"
    Android:background="#FFFFFF" >

        <ImageView
            Android:layout_width="match_parent"
            Android:layout_height="800dp"
            Android:src="@drawable/ic_launcher" />
    </LinearLayout>

</ScrollView>

L’arrière-plan du défilement est rose et l’agencement linéaire à l’intérieur de l’icône d’icône Android avec une hauteur de 800dp (qui ne correspond pas à l’écran). Ce que je compte voir, c’est que imageview flotte dans un fond rose avec une marge de 10dp dans tous les côtés (haut, bas, gauche, droite). marge, de sorte que le bas du défilement est l'imageview pas la marge rose.

Comment puis-je empêcher cela? Cela fait penser à l'utilisateur que la page n'est pas encore terminée et lui donne envie de faire défiler davantage.

19
Mehmet Katircioglu

J'ai découvert par la suite qu'une situation similaire avait déjà été résolue dans le fil suivant https://stackoverflow.com/a/16885601/1474471 de @olefevre.

L'ajout d'un LinearLayout supplémentaire qui entoure le LinearLayout actuel avec un rembourrage et la suppression de la marge de présentation de LinearLayout interne ont résolu le problème:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="#D23456"
    Android:padding="10dp" >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="#FFFFFF" >

        <ImageView
            Android:layout_width="match_parent"
            Android:layout_height="800dp"
            Android:src="@drawable/ic_launcher" />
    </LinearLayout>
</LinearLayout>

</ScrollView>
49
Mehmet Katircioglu

La solution publiée par @Mehmet Katircioglu fonctionne bien, mais vous pouvez résoudre le problème en changeant simplement le Android: layout_margin en Android: padding , sans aucune vue supplémentaire. Comme ça:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >

   <LinearLayout
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content"
      Android:background="#D23456"
      Android:padding="10dp" >

      <!-- Your content (ImageView, buttons...) -->
  <LinearLayout/>
13

utiliser Android:fillViewport="true" sur la ScrollView peut le faire. 

exemple dans ce fil .

0
octoback