在BottomSheet视图中滚动隐藏工具栏

时间:2016-11-22 11:37:45

标签: android android-layout android-viewpager android-toolbar bottom-sheet

我试图隐藏Toolbar使用ViewGroupBottomSheetBehavior内滚动。
滚动视图位于ViewPager内 布局如下:

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

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

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

        <com.astuetz.PagerSlidingTabStrip
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="#00000000"
            app:pstsIndicatorHeight="3dp"
            app:pstsShouldExpand="@bool/shouldExpandTab"
            app:pstsPaddingMiddle="@bool/padMiddle"
            app:pstsTabTextStyle="coded"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:gravity="center"
            app:layout_scrollFlags="scroll|enterAlways"/>

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

    <com.nao20010128nao.Wisecraft.misc.view.OverScrollViewPager
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:id="@+id/pager"/>

</LinearLayout>

在这个xml中,com.nao20010128nao.Wisecraft.misc.view.OverScrollViewPagerViewPager类之一,因此它可以作为ViewPager
当我滚动Bottom Sheet中的视图时,此代码不会隐藏Toolbar 有解决方案吗

1 个答案:

答案 0 :(得分:0)

尝试在状态更改时更改可见性

final BottomSheetBehavior behavior = BottomSheetBehavior.from(findViewById(R.id.bottomSheet));
        behavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                if (newState > BottomSheetBehavior.STATE_DRAGGING)
                    bottomSheet.post(new Runnable() {
                        @Override public void run() {
                            behavior.setState(BottomSheetBehavior.STATE_EXPANDED);
                        }
                    });
            }

            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {
            }
        });