web-dev-qa-db-fra.com

ScrollView coupe le haut et laisse de l'espace en bas

Lorsque je lance l'émulateur et que j'entre dans l'écran qui utilise ce code, il affiche la plupart des informations textuelles, mais coupe le haut de l'écran (ne peut pas défiler vers le haut), mais laisse un peu d'espace en bas.

Voici le code;

    <ScrollView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" 
    Android:visibility="visible"
    Android:fillViewport="true"
    Android:id="@+id/backgroundImage" >

 <LinearLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical"
    Android:layout_gravity="center"
    Android:padding="10dip" >

     <ImageView
        Android:id="@+id/earthSymbolImageView"
        Android:layout_width="25dp"
        Android:layout_height="25dp"
        Android:src="@drawable/earthsymbol" />

     <TextView
        Android:id="@+id/earth_content1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/earth_title"
        Android:gravity="center" 
        Android:textColor="#FFFFFF"
        Android:textSize="20sp" />

    <TextView
        Android:id="@+id/earth_content2"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="@string/earth_text" 
        Android:textColor="#FFFFFF" />

    <Button
        Android:id="@+id/backButton"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="@string/back" />

     </LinearLayout>
    </ScrollView>

Est-ce que quelqu'un sait pourquoi cela se produirait?

28
Maynn

Ceci est dû à la mise en page dans votre LinearLayout. Etant donné que votre LinearLayout est à l'intérieur d'un ScrollView, vous essayez probablement juste de centrer horizontalement (centrer verticalement à l'intérieur d'un ScrollView ne fait pas depuis). Spécifier votre LinearLayout au centre horizontalement comme ceci devrait faire l'affaire:

<LinearLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical"
    Android:layout_gravity="center_horizontal"
    Android:padding="10dip" >
30
DavidR

J'ai eu le même problème avec un HorizontalScrollViewnested dans unScrollView.I avait leHorizontalScrollViewgravity mis à__center qui causait le problème. Le simple fait de le supprimer a résolu le problème.

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

<HorizontalScrollView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center">

    <LinearLayout
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content">

        <TextView
                Android:layout_width="1000dp"
                Android:layout_height="1000dp"
                Android:gravity="center"
                Android:layout_gravity="center"
                Android:text="New Text"/>
    </LinearLayout>
</HorizontalScrollView>
24
Trevin Avery

La meilleure réponse que j'ai trouvée et testée pour résoudre ce problème est celle que @hadi a donnée dans cette question: pas de gravité pour scrollview. comment faire du contenu dans scrollview en tant que centre

Reprenant la réponse:

  • Placez votre ScrollView dans un RelativeLayout.
  • Dans ScrollView, définissez les éléments suivants:
    • Android: layout_height = "wrap_content"
    • Android: layout_centerVertical = "true"
  • Placez votre LinearLayout vertical dans ScrollView.

Le code serait:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <ScrollView
        Android:id="@+id/scrollView"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_centerVertical="true">

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="vertical">

            ...

        </LinearLayout>
    </ScrollView>
</RelativeLayout>
8
Fer

C'est assez simple - il vous suffit de déplacer layout_gravity de LinearLayout dans votre conteneur parent ScrollView:

<ScrollView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" 
    Android:visibility="visible"
    Android:fillViewport="true"
    Android:id="@+id/backgroundImage" 
    Android:layout_gravity="center" >

 <LinearLayout
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical"
    Android:padding="10dip" >
1
kudlatyIE

Vous devez ajouter marginBottom dans LinearLayout

<ScrollView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" 
Android:visibility="visible"
Android:fillViewport="true"
Android:id="@+id/backgroundImage" >

 <LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
Android:layout_gravity="center"
Android:padding="10dip"
Android:layout_marginBottom="96dp" >    

 <ImageView
    Android:id="@+id/earthSymbolImageView"
    Android:layout_width="25dp"
    Android:layout_height="25dp"
    Android:src="@drawable/earthsymbol" />

 <TextView
    Android:id="@+id/earth_content1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="@string/earth_title"
    Android:gravity="center" 
    Android:textColor="#FFFFFF"
    Android:textSize="20sp" />

<TextView
    Android:id="@+id/earth_content2"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="@string/earth_text" 
    Android:textColor="#FFFFFF" />

<Button
    Android:id="@+id/backButton"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:text="@string/back" />

 </LinearLayout>
</ScrollView>
0
Kourosh

Dans mon cas, le problème était requestFocus of EditText.

Dans votre cas, leur n'est pas EditText, le problème est donc différent. Pour ceux qui ont un problème de scrollview coupe les bords supérieurs, essayez de supprimer tous les requestFocus de tous les EditText.

0
Vipul Purohit