CoordinatorLayout со сворачивающейся панелью инструментов, NestedScrollView и RecyclerView имеет пустое пространство внизу (прокручивается слишком далеко)

Как объясняется в заголовке, я использую сворачивающуюся панель инструментов и NestedScrollView с RecyclerView внутри, и всякий раз, когда у меня есть 5 элементов в RecyclerView или меньше, отображается пустое пространство (например, если у меня есть только 2 элемента, пространство на дно будет огромным, но если у меня будет 6+ предметов, пустого места не будет).

Вот изображение и XML:

LayoutInspector и эмулятор, показывающий проблему

<?xml version = "1.0" encoding = "utf-8"?>
<android.support.design.widget.CoordinatorLayout android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto">

    <android.support.design.widget.AppBarLayout
        android:id = "@+id/appbar"
        android:layout_width = "match_parent"
        android:background = "@color/backgroundColor"
        android:layout_height = "wrap_content">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id = "@+id/episodeDetailsCollapsingToolbar"
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            app:title = "Lorem ipsum dolor sit amet"
            app:navigationIcon = "@drawable/ic_arrow_back_black"
            app:layout_scrollFlags = "scroll|exitUntilCollapsed" >

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

                <FrameLayout
                    android:layout_width = "match_parent"
                    android:layout_height = "wrap_content">

                    <ImageView
                        android:layout_width = "match_parent"
                        android:layout_height = "300dp"
                        android:contentDescription = "@string/episode_photo"
                        android:id = "@+id/photoImageView"
                        android:src = "@drawable/ic_image_60dp"
                        android:scaleType = "centerCrop"/>

                    <View
                        android:layout_width = "match_parent"
                        android:layout_height = "40dp"
                        android:layout_gravity = "top"
                        android:background = "@drawable/fade_to_white_gradient_top"/>

                    <View
                        android:layout_width = "match_parent"
                        android:layout_height = "40dp"
                        android:layout_gravity = "bottom"
                        android:background = "@drawable/fade_to_white_gradient"/>
                </FrameLayout>

                <Space
                    android:layout_width = "wrap_content"
                    android:layout_height = "70dp"/>
            </LinearLayout>

            <android.support.v7.widget.Toolbar
                xmlns:android = "http://schemas.android.com/apk/res/android"
                android:layout_width = "match_parent"
                android:layout_height = "?android:attr/actionBarSize"
                android:background = "@android:color/transparent"
                android:theme = "@style/ToolBarStyle"
                app:navigationIcon = "@drawable/ic_arrow_back_black"
                app:layout_collapseMode = "pin"
                android:id = "@+id/episodeListToolbar" />
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        android:paddingBottom = "0dp"
        android:layout_marginBottom = "0dp"
        app:layout_behavior = "@string/appbar_scrolling_view_behavior">

        <LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
            android:orientation = "vertical" android:layout_width = "match_parent"
            android:layout_gravity = "bottom"
            android:layout_height = "wrap_content">

            <TextView
                android:layout_marginTop = "10dp"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:paddingStart = "25dp"
                android:textColor = "@color/colorPrimary"
                android:textSize = "16sp"
                android:paddingBottom = "5dp"
                android:text = "@string/item_season_episode_placeholder"
                android:id = "@+id/seasonEpisodeTextView"/>

            <TextView
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:text = "@string/lorem_ipsum"
                android:paddingStart = "25dp"
                android:paddingEnd = "25dp"
                android:textSize = "15sp"
                android:textColor = "@color/textColor"
                android:id = "@+id/descriptionTextView"/>

            <TextView
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:text = "@string/comments"
                android:textSize = "14sp"
                android:textColor = "@color/textColor"
                android:padding = "5dp"
                android:layout_margin = "20dp"
                android:drawableStart = "@drawable/ic_comments"
                android:drawablePadding = "8dp"
                android:foreground = "?selectableItemBackground"
                android:id = "@+id/commentsButton"/>

            <TextView
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:text = "@string/other_episodes"
                android:paddingStart = "25dp"
                android:paddingEnd = "15dp"
                android:textSize = "20sp"
                android:textColor = "@color/darkTextColor"
                android:textStyle = "bold"/>

            <LinearLayout
                android:layout_width = "match_parent"
                android:layout_height = "match_parent"
                android:orientation = "vertical"
                android:gravity = "center"
                android:visibility = "gone"
                android:id = "@+id/emptyNextFiveLinearLayout">

                <ImageView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:src = "@drawable/ic_empty_placeholder"
                    android:layout_marginBottom = "10dp"
                    android:contentDescription = "@string/empty_placeholder_image"/>

                <TextView
                    android:layout_width = "wrap_content"
                    android:layout_height = "wrap_content"
                    android:textAlignment = "center"
                    android:text = "@string/empty_message"
                    android:textSize = "15sp"/>

            </LinearLayout>

            <android.support.v7.widget.RecyclerView
                android:layout_width = "match_parent"
                android:layout_height = "wrap_content"
                android:paddingStart = "5dp"
                android:paddingEnd = "5dp"
                android:id = "@+id/episodeDetailsRecyclerView"/>
        </LinearLayout>
    </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

Решения, которые я пробовал до сих пор:

  • Добавление android:fitsSystemWindows = "true" в CoordinatorLayout
  • Добавление android:fillViewport = "true" в NestedScrollView
  • Добавление android:layout_gravity = "fill_vertical" к NestedScrollView и RecyclerView
  • Добавление android:overScrollMode = "never" в NestedScrollView
3
0
224
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это ожидаемое поведение, поскольку сворачивающаяся панель инструментов должна полностью свернуться, где бы она ни использовалась, поэтому для этого внизу создается дополнительное пустое пространство.

Другие вопросы по теме

Похожие вопросы

Сделайте так, чтобы при модернизации не учитывались параметры запроса, которые не установлены
Шаблон наблюдателя Android и привязка данных, запуск активности при изменении логического свойства
Дождитесь разрешения пользователя, чтобы продолжить
Обновлять фрагменты окна просмотра при изменении установленных пользователем фильтров
Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод с моими кнопками
Как я могу добавить панель навигации к моей деятельности, если у меня уже есть представление с вкладками в моем действии
Невозможно установить видимость constraintlayout, чтобы уйти, если строка равна нулю
Видеообъявления Google Reward работают с идентификатором тестового рекламного блока, но не с идентификатором действующего рекламного блока
Данные, полученные из базы данных SQLite, не получают график в Android, но не показывают ошибки (с использованием GraphView в качестве библиотеки)
React Native - передача элементов плоского списка в модальное окно