Панель инструментов не прокручивается при использовании эффекта сворачивающейся панели инструментов

Я использую макет ниже, чтобы использовать эффект сворачивания панели инструментов, но не могу расширить панель инструментов. Я хочу развернуть панель инструментов, как указано здесь, для эффекта сворачивания панели инструментов. https://guides.codepath.com/android/Handling-Scrolls-with-CoordinatorLayout

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/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="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="192dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:layout_collapseMode="pin"/>

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

        <android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:scrollbars="horizontal"
            android:layout_below="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/primaryColor"
            app:layout_scrollFlags="scroll|enterAlways" />

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

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

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

Направляйте меня с любыми исправлениями.


comment
следуйте стандартным документам: android-developers.blogspot.in/ 2015/05/   -  person Harry's Lab    schedule 18.06.2015
comment
И просмотр пейджера не похож на список или прокрутку, поэтому панель инструментов не будет работать так. Вам нужно указать его во фрагментах, где вы использовали представление переработчика или вложенное представление прокрутки.   -  person Harry's Lab    schedule 18.06.2015
comment
Связанная информация о NestedScrollView, которую упомянул @Harry.   -  person Richard Le Mesurier    schedule 16.10.2015


Ответы (2)


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

person Lamorak    schedule 18.06.2015
comment
ScrollView не поддерживает это, но есть NestedScrollView, который его поддерживает. - person Richard Le Mesurier; 16.10.2015

Используйте библиотеку поддержки дизайна http://android-developers.blogspot.in/2015/05/android-design-support-library.html

включить это в build.gradle

compile 'com.android.support:design:22.2.0'    
compile 'com.android.support:appcompat-v7:22.2.+'

для просмотра переработчика включите это также

compile 'com.android.support:recyclerview-v7:22.2.0' 

    <!-- AppBarLayout allows your Toolbar and other views (such as tabs provided by TabLayout) 
    to react to scroll events in a sibling view marked with a ScrollingViewBehavior.-->
    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

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

        <!-- specify tag app:layout_scrollFlags -->
        <android.support.design.widget.TabLayout
            android:id="@+id/tabLayout"
            android:scrollbars="horizontal"
            android:layout_below="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"/>

        <!--  app:layout_collapseMode="pin" will help to pin this view at top when scroll -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="Title"
            android:gravity="center"
            app:layout_collapseMode="pin" />

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

    <!-- This will be your scrolling view. 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" tag connects this features -->
    <android.support.v7.widget.RecyclerView
        android:id="@+id/list"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v7.widget.RecyclerView>

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

Ваша активность должна расширять AppCompatActivity

public class YourActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.your_layout);

        //set toolbar
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

}

Тема вашего приложения должна быть такой

    <resources>
            <!-- Base application theme. -->   
            <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
            </style>
    </resources>
person deniz    schedule 03.07.2015