Android ——可折叠Title(踩坑详细记录)

时间:2024-03-15 08:11:43

1,NestedScrollView必须设置behavior,否则将与AppBarlayout重叠,因为CoordinatorLayout是一个

CoordinatorLayout is a super-powered {@link android.widget.FrameLayout FrameLayout}

2,CollapsingToolbarLayout会折叠内部的所有控件,并且它也是一个FrameLayout!内部放一个ToolBar并且设置layout_collapseMode="pin"会自动折叠到Toolbar的高度

3,如果CollapsingToolbarLayout的高度<=layout_collapseMode="pin"的子空间高度,或者高出不多,那么不会有任何折叠效果

4,CollapsingToolbarLayout的scrimAnimationDuration属性是动画执行时长,scrimVisibleHeightTrigger是开始执行的高度

5,如果你不想用自带的title效果,比如这样的:

Android ——可折叠Title(踩坑详细记录)

(图是网上找的)

如果不想要这种title在折叠布局上的效果,请不要给CollapsingToolbarLayout设置title属性

6,AppBarLayout是一个线性布局,CollapsingToolbarLayout只会折叠内部的控件,AppBarLayout的其他控件并不会被折叠

7,CoordinatorLayout是要配合可滑动控件并且该可滑动控件设置了behavior才可以发挥效果

8,CollapsingToolbarLayout是在内部实现了AppBarLayout的offsetchangeListener的

9,offsetchangeListener的第二个参数表示用户滑动的距离,并且它是负数

10,AppBarLayout的totalScrollRange表示它的可滑动距离,与第九条中的参数是对应的,所以可以将参数的绝对值与totalScrollRange对比,当其相等时表示滑动到了最上方

11,AppBarLayout.Behaviord的onLayoutChild方法会不停地调用,所以如果你要在其中获取控件,请确保获取方法只调用一次

12,AppBarLayout.Behaviord的onStartNestedScroll是用于判断什么时候响应滑动事件

13,onNestedPreScroll方法的dy是与下方滑动控件的滑动距离相对应的,往上>0 往下<0,consumed表示消耗的滑动距离,比如consumed[0]=dx/2,那么表示在你横向滑动2像素的时候,AppbarLayout只会响应一像素的滑动距离

14,如果你在AppBarLayout.Behavior中控制子view的滑动与收缩,AppBarLayout并不会因此改变宽高大小

15,CoordinatorLayout.Behavior可以设置控件类型,layoutDependsOn中用于关联dependency

与child,dependency表示受观察的控件,child表示跟随parent做出反应的控件。

16,千万别尝试自己去实现折叠title的效果,只会把你搞到崩溃,并且效果强差人意(别问我怎么知道的)

17,在布局中设置自定义的behavior的时候,请尽量使用全路径

18,如果想要上方图中收缩后,标题栏还是该图片,请把折叠布局的背景设置成该图片