КоординаторLayout с ViewPager

Мне не удается скрыть панель приложений, когда прокручивается RecyclerView внутри ViewPager. Я нашел сообщение:

CoordinatorLayout с использованием RecyclerView ViewPager

Но мне с этим не везет. Вот мой файл макета деятельности:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/main_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true" >

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

            <include
                android:id="@+id/tool_bar"
                layout="@layout/tool_bar"
                app:layout_scrollFlags="scroll|enterAlways|snap">
            </include>

            <android.support.design.widget.TabLayout
                android:id="@+id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabMode="scrollable" />

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    </android.support.design.widget.CoordinatorLayout>

    <include
        android:id="@+id/drawer_list"
        layout="@layout/nav_drawer_list_view" />

    <include
        android:id="@+id/citizensFilter"
        layout="@layout/citizens_activity_filter" />

</android.support.v4.widget.DrawerLayout>

Фрагмент имеет большое количество просмотров внутри, поэтому я не уверен, что это может быть проблемой:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:animateLayoutChanges="true"
    android:background="@color/colorCitizenBackground" >

    <TextView
        android:id="@+id/tvUpgrade"
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true"
        android:animateLayoutChanges="true"
        android:gravity="center"
        android:text="@string/load_more_profiles"
        android:textSize="16sp"
        android:textColor="@color/white" />

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/layoutSwipeRefresh"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/tvUpgrade"
        android:layout_below="@+id/horizontalScrollView1" >

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerCitizens"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </android.support.v7.widget.RecyclerView>


    </android.support.v4.widget.SwipeRefreshLayout>

    <HorizontalScrollView
        android:id="@+id/horizontalScrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@color/citizen_filter_color"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:scrollbars="none" >

        <TextView
            android:id="@+id/tvFilterList"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:singleLine="true"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:textColor="@color/white" />
    </HorizontalScrollView>

    <include android:id="@+id/layoutNoneFound"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        layout="@layout/view_no_search_results"
        android:layout_below="@+id/horizontalScrollView1" />

    <include android:id="@+id/layoutLoading"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        layout="@layout/view_loading"
        android:layout_below="@+id/horizontalScrollView1" />

    <include android:id="@+id/layoutGetLocation"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        layout="@layout/view_determine_location"
        android:layout_below="@+id/horizontalScrollView1" />

    <RelativeLayout
        android:id="@+id/layoutDiscover"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:clickable="true"
        android:visibility="invisible" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/rounded_corners_discover"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:paddingLeft="20dp"
            android:paddingStart="20dp"
            android:paddingRight="20dp"
            android:paddingEnd="20dp">

            <TextView
                android:id="@+id/tvDiscover"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/discover"
                android:textColor="@color/colorPrimaryText"
                android:textAppearance="?android:attr/textAppearanceSmall" />

                <Spinner
                    android:id="@+id/spDiscover"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:gravity="right|end"
                    android:layout_weight="1" />
            </LinearLayout>

            <android.support.v7.widget.RecyclerView
                android:id="@+id/recyclerDiscover"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="20dp"
                android:paddingTop="20dp"
                android:layout_marginLeft="10dp"
                android:layout_marginStart="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginEnd="10dp">
            </android.support.v7.widget.RecyclerView>

        </LinearLayout>
    </RelativeLayout>

</RelativeLayout>

Я даже пытался установить CoordinatorLayout программно, используя;

CoordinatorLayout.LayoutParams params = new CoordinatorLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
params.setBehavior(new AppBarLayout.ScrollingViewBehavior());
recyclerCitizens.setLayoutParams(params);

Но это все равно не повлияло. Что мне не хватает? У меня сложилось впечатление, что установка layout_behavior на ViewPager позволит реализовать эту реализацию.


person Mike Walker    schedule 08.06.2016    source источник


Ответы (1)


Я смог выяснить, в чем проблема. В моем файле макета я не мог сделать оператор <include>. Мне пришлось изменить:

<include
    android:id="@+id/tool_bar"
    layout="@layout/tool_bar"
    app:layout_scrollFlags="scroll|enterAlways|snap">
</include>

to:

<android.support.v7.widget.Toolbar
    android:id="@+id/tool_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_scrollFlags="scroll|enterAlways|snap"/>
person Mike Walker    schedule 13.06.2016