Android CoordinatorLayout、AppBarLayout、DrawerLayout、NavigationView 的使用及问题小结

这里只对Material Design中这几种组件使用的重要部分以及容易出现问题的地方进行汇总(遇坑请直接看最后常见问题部分),详细用法请自行查阅官方文档

一、CoordinatorLayout

介绍:CoordinatorLayout主要用来作为顶层布局来协调各子布局

使用:CoordinatorLayout包含一个Child和一个Dependency,最后还需要一个最重要的Behavior。

  1)Child是指要执行动作的CoordinatorLayout的子View;

  2)Dependency是指Child依赖的View;

  3)简单来讲,就是如果Dependency这个View发生了变化,那么Child这个View就要相应发生变化;

  4)Child发生变化的具体执行的代码都是放在Behavior这个类里面。

  5)Behavior最基本的用法就是在Child这个View的XML文件中定义一个app:layout_behavior="@string/appbar_scrolling_view_behavior"表示跟随Dependency一起滑动

自定义Behavior:

  1)首先,定义一个类,继承CoordinatorLayout.Behavior<T>,其中,泛型参数T是我们要执行动作的View类,也就是Child。然后就是去实现Behavior的两个方法:

/** * 判断child的布局是否依赖dependency */ @Override public boolean layoutDependsOn(CoordinatorLayout parent, T child, View dependency) { boolean rs; //根据逻辑判断rs的取值,例如:rs = dependency instanceof CustomDependency //返回false表示child不依赖dependency,ture表示依赖 return rs; } /** * 当dependency发生改变时(位置、宽高等),执行这个函数 * 返回true表示child的位置或者是宽高要发生改变,否则就返回false
* 每次dependency位置发生变化,都会执行onDependentViewChanged方法
*/ @Override public boolean onDependentViewChanged(CoordinatorLayout parent, T child, View dependency) { //child要执行的具体动作 return true; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyygxx.html