假如,当RecyclerView遮挡屏幕顶部的Toolbar时,解决方法:
①一般解决就是使用偏移,将RecyclerView向下偏移一个Toolbar高度即可。
②不过,Design support 提供的一个控件:AppBarLayout 也可以解决此问题。而且还可以实现ToolBar需要时就出现,不需要时就隐藏(因为AppBarLayout 内部做了很多滚动事件的封装)。
AppBarLayout ,实际上是一个垂直方向的LinearLayout,不过AppBarLayout 内部做了很多滚动事件的封装,并有Material Design风格。
AppBarLayout使用很简单:
① 将Toolbar嵌套在AppBarLayout布局之中:如:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFF">
<Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
tools:targetApi="lollipop">
</Toolbar>
</android.support.design.widget.AppBarLayout>
② 给RecyclerView指定布局行为(layout_behavior)
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
</android.support.v7.widget.RecyclerView>
这样,RecyclerView就不会遮挡住Toolbar了。
Toolbar需要就出现,不需要就隐藏实现:
RecyclerView滚动时候,此滚动事件会通知给AppBarLayout,可以为Toolbar设置app:layout_scrollFlags="scroll|enterAlways|snap">
这样,Toolbar需要就出现,不需要就影藏就实现了,scroll代表RecyclerView向上滚动时隐藏Toolbar,enterAlways代表RecyclerView向下滚动时重新显示Toolbar,snap代表Toolbar还没完全隐藏或显示时,根据RecyclerView滚动距离自动显示/或隐藏Toolbar。