CoordinatorLayout
CoordinatorLayout是Design包里面的一个控件。所以在使用时需要导包。
compile 'com.android.support:design:24.1.1'
在CoordinatorLayout中使用AppBarLayout,如果AppBarLayout的子View(如ToolBar、TabLayout)标记了app:layout_scrollFlags滚动事件,那么在CoordinatorLayout布局里其它标记了app:layout_behavior的子View(LinearLayout、RecyclerView、NestedScrollView等)就能够响应(如ToolBar、TabLayout)控件被标记的滚动事件。(ListView不可以,只有实现了NestedScroll的控件才可以响应)。
将CoordinatorLayout作为根布局,里面写上RecyclerView和AppBarLayout。并且将需要隐藏的控件写上 app:layout_scrollFlags="scroll|enterAlwaysCollapsed"
属性,将RecyclerView写上
app:layout_behavior="@string/appbar_scrolling_view_behavior"
属性即可。
layout_scrollFlags中的几个值:
scroll: 所有想滚动出屏幕的view都需要设置这个flag, 没有设置这个flag的view将被固定在屏幕顶部。
enterAlways:这个flag让任意向下的滚动都会导致该view变为可见,启用快速“返回模式”。
enterAlwaysCollapsed:当你的视图已经设置minHeight属性又使用此标志时,你的视图只能以最小高度进入,
只有当滚动视图到达顶部时才扩大到完整高度。 简单来说就是RecyclerView下拉到顶以后隐藏的视图才会显现。
exitUntilCollapsed:滚动退出屏幕,最后折叠在顶端。
布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout android:id="@+id/main_content"
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.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="#f00"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="#559900"
app:tabIndicatorHeight="5dp"
app:tabSelectedTextColor="#dd0000"
app:tabTextColor="#000000"
/>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
CoordinatorLayout实现标题栏的隐藏就说到这。