工具栏隐藏了PagerTitleStrip和RecyclerView

时间:2016-02-06 13:53:10

标签: android material-design toolbar drawerlayout pagertitlestrip

Screenshot 1和 我的应用的Screenshot 2

问题基本上是这样的:即使我已将layout_behaviour设置为我的ViewPager,PagerTitleStrip和RecyclerView也会低于我的工具栏。

更详细信息:

我有一个主要活动,它使用下面的布局,然后从中我启动片段。在尝试CoordinatorLayout + ViewPager和所有其他花哨的东西之前,我只有一个FrameLayout,我在其中显示了我的片段。但是,我决定要使用

app:layout_scrollFlags="scroll|enterAlways"
     

应用程式:layout_behavior = “@串/ appbar_scrolling_view_behavior”

当我滚动recyclerview时,我的工具栏消失了。我在网上发现FrameLayout没有任何行为允许我修复在工具栏下的recyclerView的位置,这就是为什么我改为ViewPager + CoordinatorLayout来管理我的碎片。

然而,这引入了一些问题。我想要实现的是 - 一个附有PagerTitleStrip的工具栏,当我滚动工具栏消失时,理想的是可以看到PagerTitleStrip,也许它隐藏起来我也不在乎那么多。但是我希望我的导航抽屉继续工作而不是。它就像它不存在。

现在,第一个布局实际上具有上述所有功能,但问题是条带位于工具栏下方,除非工具栏在滚动时隐藏,否则它不可见。抽屉工作。遗憾的是,Recycler视图项部分隐藏在工具栏下方 - 即使我有这个设置,它们也不会从屏幕的右侧开始滚动 - 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。

1 个答案:

答案 0 :(得分:2)

问题在于:

<android.support.design.widget.CoordinatorLayout 

<android.support.v4.widget.DrawerLayout

DrawerLayout应该是根布局。

请参阅:http://developer.android.com/training/implementing-navigation/nav-drawer.html#DrawerLayout

  

要添加navigation drawer,请使用a声明您的用户interface   DrawerLayout对象作为布局的根视图。在 - 的里面   DrawerLayout,添加一个包含主要内容的视图   屏幕(隐藏抽屉时的主要布局)和另一个   包含navigation drawer

内容的视图

此外,建议不要使用ListView代替NavigationView

以下是文档建议的方法(ListView :)除外:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <!-- The navigation drawer -->
    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

还有:

  

然而,这引入了一些问题。我想要实现的是 - A   当我滚动时,Toolbar附加PagerTitleStrip PagerTitleStrip   可能,工具栏消失,理想情况下可以看到Navigation Drawer   它隐藏起来我对此并不在乎。但我想要我的   CollapsingToolbarLayout继续工作,而不是。

检查我的答案:

https://stackoverflow.com/a/35241363/4409113

您只需将工具栏放在<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsingtoolbarly" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|snap"> <android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.ActionBar" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <ImageView android:layout_width="match_parent" android:layout_height="190dp" android:minHeight="190dp" android:scaleType="fitXY" android:src="@drawable/header" app:layout_collapseMode="parallax" /> </android.support.design.widget.CollapsingToolbarLayout> 内:

PagerTitleStrip

它应该会崩溃并且之后会隐藏工具栏。如果你想保留TabLayout(建议现在使用CollapsingToolbarLayout),只需将其放在</android.support.design.widget.AppBarLayout>下方即可在这个</android.support.design.widget.CollapsingToolbarLayout> <android.support.design.widget.TabLayout android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="?actionBarSize" android:background="?attr/colorPrimary" /> </android.support.design.widget.AppBarLayout> 之上:

{{1}}

那就是它,Goodluck然后。