关于CoordinatorLayout + AppBarLayout 样式中如果有用到banner,且banner是在视觉上整个页面最下面时,建议不要把banner写在CoordinatorLayout 外面,因为 CoordinatorLayout + AppBarLayout 带有滑动效果,手势上会对banner的所有滑动和点击有干扰,当然你可以自己重写或者修改它,或者自定义符合你效果的: layout_behavior ,当然如果你不想自定义,可以换个位置:
把banner写在CoordinatorLayout 跟布局中,最下层位置,也就是写在最上面,正常滑动和点击就不会对banner有影响了。
另外:如果想在上下滑动时,对banner整个区域做一个透明度处理,当网上滑动时,banner区域逐渐被覆盖,或者透明度逐渐为0,我这里时在banner上层加一个ImageView 给一个背景颜色,当滑动时,给这个View逐渐显示,默认时透明度为0。代码如下
然后在页面中处理AppBarLayout 的滑动事件监听并修改透明度:
binding.appbar.addOnOffsetChangedListener { appBarLayout, verticalOffset ->
val totalScrollRange: Int = appBarLayout.totalScrollRange
val ratio = (-verticalOffset * 1.0f) / totalScrollRange
binding.imgNewPageBg.background.alpha = (ratio * 255).toInt()
}
这样就可以了