问题基本上是这样的:PagerTitleStrip 和 RecyclerView 位于我的工具栏下方,即使我已将 layout_behaviour 设置为我的 ViewPager。
更多详情:
我有一个使用下面布局的主要活动,然后我从它启动片段。在尝试 CoordinatorLayout + ViewPager 和所有其他花哨的东西之前,我只有一个 FrameLayout,我在其中显示了我的片段。但是,我决定要使用
app:layout_scrollFlags="scroll|enterAlways"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
这样当我滚动回收站视图时我的工具栏就会消失。我在网上发现 FrameLayout 没有任何行为可以让我修复工具栏下方的 recyclerView 的位置,这就是为什么我改为 ViewPager + CoordinatorLayout 来管理我的片段。
然而,这带来了一些问题。我想要实现的是 - 一个带有 PagerTitleStrip 的工具栏,当我滚动工具栏时,它会消失,理想情况下会看到 PagerTitleStrip,也许它也隐藏起来了,我不太在意。但我希望我的导航抽屉继续工作,但事实并非如此。就好像它不存在一样。
现在,第一个布局实际上具有上述所有功能,但问题是条带位于工具栏下方,除非在我滚动时工具栏隐藏,否则它是不可见的。抽屉作品。不幸的是,回收站视图项目部分隐藏在工具栏下方 - 即使我设置了它,它们也不会从屏幕的右侧开始滚动 - appbar_scrolling_view_behavior
布局 m_drawerlayout.xml 让我的主要活动膨胀:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<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.v4.view.PagerTitleStrip
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="6dp"
android:paddingBottom="6dp"
android:layout_gravity="top"
android:textSize="15sp"
android:textColor="@color/tealfifty"
android:background="@color/teal">
</android.support.v4.view.PagerTitleStrip>
</android.support.v4.view.ViewPager>
<ListView
android:id="@+id/drawer_list"
android:background="@color/tealDark"
android:cacheColorHint="@android:color/transparent"
android:choiceMode="singleChoice"
android:divider="@drawable/list_divider"
android:dividerHeight="1dp"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_gravity="start"/>
</android.support.v4.widget.DrawerLayout>
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include layout="@layout/app_bar"/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
这是我的 app_bar.xml 的代码
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/top_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/teal"
app:theme="@style/ToolbarTheme"
app:popupTheme="@style/Green.Overlay.LightPopup"
app:layout_scrollFlags="scroll|enterAlways" >
<Spinner android:id="@+id/spinner"
android:layout_gravity="right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"
android:paddingRight="20dp"
/>
</android.support.v7.widget.Toolbar>
我尝试移动元素,进出其他组件,但没有成功。例如,将 PagerTitleStrip 附加到工具栏并共享一个行为似乎是合乎逻辑的,我必须将 PagerTitleStrip 嵌套在 AppBar 布局中,但 PagerTitleStrip 必须是 ViewPager 的直接子级才能工作......关于这一切?我对所有这些设计功能都很陌生,我研究了很多但没有成功,这里有类似的主题,但根本不是我需要的。与其他基本主题相比,互联网上似乎几乎没有关于我在上面尝试做的事情(有一些)。
如果有人想知道为什么我在没有选项卡的情况下使用 ViewPager,那是因为正如我所说,FrameLayout 没有允许我正确使用消失的工具栏的行为,这就是我发现的好用的方法。我还看到可以使用 NestedScrollView,但我从来没有使用过它......我现在想可能使用 ViewPagerTitle,我猜这将我限制为片段的 ViewPager。