and*_*per 11 android android-fragments android-viewpager android-toolbar android-coordinatorlayout
我有一个viewPager,有3个片段和标签.每个片段都有一个(自己的)介绍阶段,它没有任何可滚动的内容.
离开介绍阶段后,有一个用户可以滚动的recyclerView.
我需要使用新的设计库,以便在滚动时(仅通过recyclerView),它将隐藏actionBar并让标签仍然显示.
当用户转到没有可滚动内容的片段时,actionBar应该重新出现,类似于"Google Play报亭".事实上,我甚至乐意拥有他们拥有的东西:只要你开始向左/向右滑动,就会重新显示操作栏.
事实上,如果我遵循指南和样本,我有两个问题:
片段的不可滚动阶段在底部被截断,就好像它可以滚动一样.
我找不到如何重新显示actionBar,并让它停留在那里直到我切换到可滚动内容(通过切换到另一个片段,或当当前片段的内容变为可滚动内容时).
这是活动的当前布局XML文件的简短片段:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/activity_main__coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/activity_main__appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="?attr/actionBarTheme">
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layoutDirection="ltr"
android:theme="?attr/actionBarTheme"
app:layout_scrollFlags="scroll|enterAlways|snap"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
tools:ignore="UnusedAttribute"/>
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:tabGravity="fill"
app:tabIndicatorColor="#FFffffff"
app:tabIndicatorHeight="3dp"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<include layout="@layout/fabs"/>
</android.support.design.widget.CoordinatorLayout>
<include
layout="@layout/sliding_menu"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="left"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
片段具有ViewAnimator的布局,只需在阶段之间切换,而其中一个是不可滚动的内容,另一个是RecyclerView.
我试图添加一个NestedScrollView/ScrollView不可滚动的内容,并强制它填充自己,使用android:fillViewport ="true",但它不起作用.对于ScrollView,它甚至不允许滚动.
编辑:我尝试过的另一件事是在viewPager上使用addOnPageChangeListener,以便在onPageSelected中我可以设置工具栏的标志:
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) mToolbar.getLayoutParams();
params.setScrollFlags(!needScrolling? 0 : LayoutParams.SCROLL_FLAG_SNAP | LayoutParams.SCROLL_FLAG_ENTER_ALWAYS | LayoutParams.SCROLL_FLAG_SCROLL);
Run Code Online (Sandbox Code Playgroud)
它有效,但它也有问题:
编辑:一种解决方案是在不可滚动的片段内容的底部添加相同高度的操作栏(layout_height ="?actionBarSize")的空视图.但是,当隐藏操作栏时,我可以看到视图,因此存在空白区域.我仍然需要知道如何在这个案例中重新显示操作栏.
如何为工具栏设置不同的行为,以便它会重新显示并停留在某些状态,但只有在当前片段上显示RecyclerView时才可滚动?
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |