ScrollView отсекает верх и оставляет пространство внизу

Когда я запускаю эмулятор и вхожу на экран, который использует этот код, он отображает большую часть текстовой информации, но отсекает верхнюю часть экрана (can not scroll up), но оставляет немного места внизу.

Вот код;

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

Кто-нибудь знает, почему это произойдет?

У меня была та же проблема, что и HorizontalScrollView , ScrollView. в ScrollView. У меня была гравитация HorizontalScrollView в center которая вызывала проблему. Исправлена ​​проблема с удалением.

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

Это вызвано из-за layout_gravity в вашем LinearLayout. Поскольку ваш 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" > 

Лучший ответ, который я нашел и протестировал, который исправляет эту проблему, – это тот, который @hadi дал в этом вопросе: нет гравитации для scrollview. Как сделать контент внутри scrollview как центра

Возобновление ответа:

  • Поместите свой ScrollView внутри RelativeLayout.
  • В ScrollView установите следующее:
    • андроид: layout_height = "wrap_content"
    • андроид: layout_centerVertical = "истина"
  • Поместите вертикальный 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> 

Это довольно просто – вам просто нужно переместить 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" > 

В моем случае проблема была requestFocus из EditText .

В вашем случае их нет EditText поэтому проблема – это что-то другое. Для тех, у кого проблемы с scrollview вырезает верхние края, попробуйте удалить все requestFocus из всего EditText .

Если вы хотите, чтобы TextViews был прокручиваемым, почему бы вам не поместить ScrollView вокруг этих двух элементов?

  <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_gravity="center" android:padding="10dip" > <ScrollView> <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" /> </ScrollView> <Button android:id="@+id/backButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/back" /> </LinearLayout> 
Intereting Posts