android_appBar的使用

效果图

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);



}

猜你喜欢

转载自blog.csdn.net/iamchan/article/details/82838336