Закрепите TabLayout наверху, а панель инструментов ниже прокручивается в нее с помощью AppBarLayout

У меня есть TabLayout, который я хочу всегда закрепить вверху, и панель инструментов под ним, которая при прокрутке представления прокручивается до TabLayout.

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/main_content"
    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"
    tools:context=".main.MainActivity">



    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:animateLayoutChanges="true"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
            <android.support.design.widget.TabLayout
                android:id="@+id/tabLayout"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"/>


            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways"/>

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

    <android.support.v4.widget.NestedScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageView2"
            android:src="@drawable/music_content"
            android:contentDescription="@string/image_chooser_title"
            />

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

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

Вы можете видеть здесь, что я установил панель инструментов

app:layout_scrollFlags="scroll|enterAlways"

и не устанавливайте флаги прокрутки для TabLayout выше, так как я хочу, чтобы он оставался закрепленным. Однако при использовании этих настроек AppBarLayout вообще не прокручивается. Если я добавлю флаг прокрутки в TabLayout, то они оба прокручиваются, и TabLayout не остается фиксированным. Есть ли способ, чтобы TabLayout оставался фиксированным, а панель инструментов ниже прокручивалась вверх «вне экрана»?

При необходимости могу предоставить фотографии




Ответы (1)


Согласно сообщению в блоге библиотеки поддержки дизайна Android :

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

Итак, то, что вы хотите, невозможно с AppBarLayout.

person ianhanniballake    schedule 18.03.2016
comment
привет, не могли бы вы рассказать, как добиться поведения прокрутки в приложении Foursquare, как показано здесь: youtu.be/enWVNP3Gifg . - person Abu Ruqaiyah; 28.09.2017