参考
作用:
协调各个子View的布局
关键点:
- Behavior:设置child的行为。
- Child和Dependency:都是CoordinatorLayout的子view,child依赖于dependency,当Dependency的大小或位置改变时,child来执行相应的动作,即Behavior。
实现:
1、自定义Behavior
定义一个类,继承CoordinatorLayout.Behavior<T>,其中,泛型参数T是我们要执行动作的View类,也就是Child。然后就是去实现Behavior的两个方法:
/**
* 判断dependency是否为你想依赖的view
*/
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, T child, View dependency) {
boolean rs;
//根据逻辑判断rs的取值
//返回false表示child不依赖dependency,ture表示依赖
return rs;
}
/**
* 当dependency发生改变时(位置、宽高等),执行这个函数
* 返回true表示child的位置或者是宽高要发生改变,否则就返回false
*/
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, T child, View dependency) {
//child要执行的具体动作
return true;
}
2、在布局文件中加入设置对应的behavior
<CoordinatorLayout>
<Child
app:layout_behavior="com.hc.studyCoordinatorLayout.MyBehavior"/>
<Dependency />
</CoordinatorLayout>
网友评论