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。
答案 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然后。