效果图
gradle
compile 'com.android.support:design:26.0.0-alpha1' compile 'com.zhy:base-rvadapter:3.0.3'
layouyt
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.iamchan.appbarlayout.MainActivity">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="50dp"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed" />-->
<android.support.design.widget.CollapsingToolbarLayout
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/main.backdrop"
android:layout_width="match_parent"
android:layout_height="300dp"
android:scaleType="centerCrop"
app:layout_collapseParallaxMultiplier="0.7"
android:src="@mipmap/ic_launcher"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/recyc"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</android.support.design.widget.CoordinatorLayout>
</LinearLayout>
<!--
app:layout_behavior="@string/appbar_scrolling_view_behavior"
联动需要添加layout_behaver
app:layout_scrollFlags="scroll" flag为scroll时 就是当指定的RecyclerView发生滚动时,toolBar跟随一起滚动,就好像toolBar也是属于这个recyclerView一样。
app:layout_scrollFlags="scroll|enterAlways" flag为 scroll|enterAlways 当RecyclerView往下滚动时,toolBar会直接往下滚动。不考虑RecyclerView是否在滚动。 向上滚动就消失
app:layout_scrollFlags="scroll|exitUntilCollapsed" flag为 scroll|exitUntilCollapsed 当recyclerView往上滑动时,首先是toolBar把滑动事件“夺走”,由toolBar去执行滑动,直到滑动最小高度后,把这个滑动事件“还”回去\
android:minHeight="50dp"
android:layout_width="match_parent"
android:layout_height="200dp"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed" flag为 scroll|enterAlwaysCollapsed时 跟flag为 scroll|exitUntilCollapsed 状态差不多 toolbar会消失
CollapsingToolbarLayout CollapsingToolbarLayout是用来对Toolbar进行再次包装的ViewGroup,主要是用于实现折叠的toolbar效果。它需要放在AppBarLayout布局里面,并且作为AppBarLayout的直接子View
app:layout_collapseMode="pin" pin和parallax是两种模式
有两种“pin”:固定模式,在折叠的时候最后固定在顶端;“parallax”:视差模式,在折叠的时候会有个视差折叠的效果。
app:layout_collapseParallaxMultiplier="0.7" 设置视差的系数,介于0.0-1.0之间。
视差其实就是让这个View的滚动的速度比其他正常滚动的View速度稍微慢一点
-->
java
recyclerView= (RecyclerView) findViewById(R.id.recyc); toolbar= (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle("这里是Title"); setSupportActionBar(toolbar); final List<String> strings=new ArrayList<>(); for(int i=0;i<20;i++){ strings.add("RecyclerViewTest"+i); } recyclerView.setAdapter(new CommonAdapter(this,R.layout.item,strings) { @Override protected void convert(ViewHolder holder, Object o, int position) { holder.setText(R.id.text,strings.get(position)); } }); LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this); linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(linearLayoutManager); }