40

エミュレーターを起動し、このコードを使用する画面に入ると、ほとんどのテキスト情報が表示されますが、画面の上部が切り取られますが (上にスクロールできません)、下部に少しスペースが残ります。

コードは次のとおりです。

    <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>

なぜこれが起こるのか誰にも分かりますか?

4

8 に答える 8

50

これは、LinearLayout の layout_gravity が原因で発生しています。LinearLayout は ScrollView 内にあるため、おそらく水平方向に中央揃えしようとしているだけです (ScrollView 内で垂直方向に中央揃えすることはできません)。このように LinearLayout を水平方向に中央揃えに指定すると、うまくいくはずです。

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_gravity="center_horizontal"
    android:padding="10dip" >
于 2013-09-27T19:59:44.177 に答える
26

問題の原因となっている重力を設定したHorizontalScrollViewネストされた内部で同じ問題が発生しました。削除するだけで問題は解決しました。ScrollView.HorizontalScrollViewcenter

<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>
于 2013-06-07T13:55:18.720 に答える
10

この問題を解決するために私が見つけてテストした最良の答えは、@hadiがこの質問で与えたものです 。スクロールビューに重力はありません。スクロールビュー内のコンテンツを中心にする方法

答えを再開する:

  • ScrollView を RelativeLayout 内に配置します。
  • ScrollView で、次のように設定します。
    • Android:layout_height="wrap_content"
    • android:layout_centerVertical="true"
  • 垂直方向の LinearLayout を ScrollView 内に配置します。

コードは次のようになります。

<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>
于 2015-09-11T07:21:43.097 に答える
2

とても簡単です。layout_gravity を LinearLayout から親コンテナーの 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" >
于 2015-07-17T10:04:49.950 に答える