CoordinatorLayout

本文详细介绍了CoordinatorLayout的功能及其组件,如AppBarLayout、CollapsingToolbarLayout等,并解释了如何使用Behavior来控制子View的行为。

CoordinatorLayout是FrameLayout的升级版,它可以处理子View间的关系,实现更好的UI效果。

ScrollView不能和CoordinatorLayout一起使用,应该使用NestedScrollView并为其指定app:layout_behavior

AppBarLayout
<android.support.design.widget.CoordinatorLayout
        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">
     
     <! -- Your Scrollable View -->
    <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.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
   	  <android.support.v7.widget.Toolbar
            	app:layout_scrollFlags="scroll|enterAlways">

          <android.support.design.widget.TabLayout
            	app:layout_scrollFlags="scroll|enterAlways">
     </android.support.design.widget.AppBarLayout>
     
</android.support.design.widget.CoordinatorLayout>
复制代码
  1. 给RecyclerView指定app:layout_behavior="@string/appbar_scrolling_view_behavior"
  2. AppBarLayout的子View如果app:layout_scrollFlags="scroll",那么该View就会随着RecyclerView的滑动而滑出屏幕。反则,固定在屏幕顶部。enterAlways指定View的滑动行为。
  3. 指定app:layout_scrollFlags的值为scroll的View应该写在不能滑出屏幕的View的前面。
CollapsingToolbarLayout
<android.support.design.widget.AppBarLayout
        android:layout_height="192dp"
        android:layout_width="match_parent">
    <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">
        <android.support.v7.widget.Toolbar
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"
                app:layout_collapseMode="pin"/>
        </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
复制代码
  1. CollapsingToolbarLayout是用来控制子View的压缩模式,通过属性app:layout_collapseMode="parallax"
  2. 给CollapsingToolbarLayout添加app:contentScrim="?attr/colorPrimary"达到更好的UI效果。
  3. 要设置app bar的标题时,应该调用CollapsingToolbarLayout的setTitle方法,而不是Toolbar。
自定义Behaviors

CoordinatorLayout通过Behavior来控制子View的行为。Behavior的指定有两种方式,一种是在xml文件中指定app:layout_behavior="com.example.app.YourView$Behavior",另一种是在代码中给子View的类加上注解CoordinatorLayout.DefaultBehavior(YourView.Behavior.class)。Behavior接口有两个方法,layoutDependsOnonDependentViewChangedlayoutDependsOn声明子View间的依赖关系。当有事件被触发时,CoordinatorLayout就会根据子View的依赖关系,调用相关的onDependentViewChanged方法达到控制

参考: http://android-developers.blogspot.com/2015/05/android-design-support-library.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值