Белое неактивное нижнее пространство на CoordinatorLayout

У меня есть xml-файл с CoordinatorLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:visibility="visible"
    android:gravity="center_horizontal">
            <android.support.design.widget.CoordinatorLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:app="http://schemas.android.com/apk/res-auto"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <android.support.design.widget.AppBarLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                    android:layout_marginStart="4dp"
                    android:layout_marginEnd="4dp"
                    android:layout_marginLeft="4dp"
                    android:layout_marginRight="4dp">
                    <android.support.design.widget.TabLayout
                        android:id="@+id/tabLayout"
                        app:tabBackground="@drawable/my_tab_item_bg_selector"
                        app:tabMaxWidth="0dp"
                        app:tabGravity="fill"
                        app:tabMode="fixed"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" />
                </android.support.design.widget.AppBarLayout>
                <android.support.v4.view.ViewPager
                    android:id="@+id/viewPager"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
            </android.support.design.widget.CoordinatorLayout>
</LinearLayout>  

И у меня есть еще один xml-файл, который я помещаю в макет координатора.

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/nestedScrollData"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
    <LinearLayout
        android:id="@+id/layoutDataDispatchContacts"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal">

        <LinearLayout
            android:id="@+id/layoutFullTableDispatchContacts"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:gravity="center_horizontal"
            android:background="@drawable/layout_block_background">
            <LinearLayout
                android:id="@+id/tableLinearLayoutDispatchContacts"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:gravity="center_horizontal">
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
</android.support.v4.widget.NestedScrollView>

Я ловлю баг с пустым пространством, которое закрывает часть моего окна и не кликабельно. Это показано на снимке экрана ниже: неактивное нижнее пространство без клика Я заметил, что при удалении приложения: layout_behavior="@string/appbar_scrolling_view_behavior" из моего ViewPager, ошибка исчезает. Но у меня тоже пропадают названия вкладок. Я думаю, что это создает какую-то невидимую панель инструментов или что-то в этом роде.


person Zhebzhik Babich    schedule 06.01.2017    source источник
comment
разве это пустое пространство не является областью «layoutBottom» в вашем случае?   -  person Usman Rana    schedule 06.01.2017
comment
нет, я изменил код, удалил лишнее   -  person Zhebzhik Babich    schedule 06.01.2017
comment
Я нашел какое-то глупое решение.   -  person Zhebzhik Babich    schedule 07.01.2017
comment
Я удалил app:layout_behavior=@string/appbar_scrolling_view_behavior из ViewPager и NestedScrollView, заменил android:layout_height=wrap_content в AppBarLayout и TabLayout на android:layout_height=45dp и добавил android:layout_marginTop=45dp в ViewPager. Не лучшее решение, но оно работает. Проблема была действительно в appbar_scrolling_view_behavior. Это добавило пустое нижнее пространство. Мне даже все равно, почему.   -  person Zhebzhik Babich    schedule 07.01.2017
comment
Вы добавили appbar_scrolling_view_behavior как в ViewPager, так и в NestedScrollView, что вызвало проблему, его следует добавить только в прямой дочерний элемент CoordinatorLayout, которым в вашем случае является ViewPager. NestedScrollView является частью вспомогательного макета.   -  person Usman Rana    schedule 09.01.2017
comment
Я также пытался удалить его из NestedScrollView. Был такой же результат.   -  person Zhebzhik Babich    schedule 09.01.2017
comment
Я создал макет, используя ваш код, и он будет работать нормально, установив высоту CoordinatorLayout в match_parent. Проверьте это и дайте мне знать.   -  person Usman Rana    schedule 09.01.2017
comment
Оно работает. Это действительно странно. Спасибо.   -  person Zhebzhik Babich    schedule 09.01.2017
comment
Я публикую его как ответ, примите его, чтобы он был полезен и для других, у которых может быть такая же проблема.   -  person Usman Rana    schedule 09.01.2017


Ответы (1)


Поскольку CoordinatorLayout работает как родитель подвидов, поэтому, чтобы занять весь экран, вам нужно установить высоту, соответствующую родительскому элементу, а не wrap_content, например:

андроид: layout_height = "match_parent"

и это будет работать нормально.

person Usman Rana    schedule 09.01.2017