Scrollview не прокручивается до края внизу - программирование
Подтвердить что ты не робот

Scrollview не прокручивается до края внизу

У меня есть простой макет:

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

Фон scrollview имеет розовую и линейную компоновку внутри, имеет изображение значка android с высотой 800dp (что не подходит для экрана). То, что я ожидаю увидеть, - это то, что изображение просматривается на фоне розового с краем 10 дп на каждой стороне (сверху, снизу, влево, вправо). Но когда я прокручиваю нижнюю часть, прокрутка не прокручивается до край, поэтому нижняя часть прокрутки - это изображение не розовое.

Как я могу это предотвратить? Это заставляет пользователя думать, что страница еще не закончилась и заставляет его прокручивать больше.

4b9b3361

Ответ 1

Позже выяснилось, что аналогичная ситуация уже ответила в следующем потоке fooobar.com/questions/378016/... by @olefevre.

Добавление дополнительного LinearLayout, которое окружает текущий LinearLayout с заполнением и удалением внутреннего поля макета LinearLayout, решает проблему:

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

Ответ 2

Решение, размещенное @Mehmet Katircioglu, работает хорошо, но вы можете решить проблему, просто изменив android: layout_margin на android: padding, без лишнего просмотра. Вот так:

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

Ответ 3

использовать android:fillViewport="true" на ScrollView может это сделать.

пример в этой теме.