參考
CoordinatorLayout的使用如此簡(jiǎn)單
作用:
協(xié)調(diào)各個(gè)子View的布局
關(guān)鍵點(diǎn):
- Behavior:設(shè)置child的行為樱拴。
- Child和Dependency:都是CoordinatorLayout的子view,child依賴于dependency按傅,當(dāng)Dependency的大小或位置改變時(shí),child來(lái)執(zhí)行相應(yīng)的動(dòng)作,即Behavior。
實(shí)現(xiàn):
1侵佃、自定義Behavior
定義一個(gè)類,繼承CoordinatorLayout.Behavior<T>,其中恰响,泛型參數(shù)T是我們要執(zhí)行動(dòng)作的View類趣钱,也就是Child。然后就是去實(shí)現(xiàn)Behavior的兩個(gè)方法:
/**
* 判斷dependency是否為你想依賴的view
*/
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, T child, View dependency) {
boolean rs;
//根據(jù)邏輯判斷rs的取值
//返回false表示child不依賴dependency胚宦,ture表示依賴
return rs;
}
/**
* 當(dāng)dependency發(fā)生改變時(shí)(位置首有、寬高等)燕垃,執(zhí)行這個(gè)函數(shù)
* 返回true表示child的位置或者是寬高要發(fā)生改變,否則就返回false
*/
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, T child, View dependency) {
//child要執(zhí)行的具體動(dòng)作
return true;
}
2井联、在布局文件中加入設(shè)置對(duì)應(yīng)的behavior
<CoordinatorLayout>
<Child
app:layout_behavior="com.hc.studyCoordinatorLayout.MyBehavior"/>
<Dependency />
</CoordinatorLayout>