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?
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" >
J'ai eu le même problème avec un HorizontalScrollView
nested dans unScrollView.
I avait leHorizontalScrollView
gravity 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>
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:
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>
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" >
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>
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
.