Android如何通过代码触发CoordinatorLayout的HideBottomViewOnScrollBehavior隐藏效果
底部TextView滚动显隐效果实现方案
你之前的代码失效的核心原因是错误地将原有的HideBottomViewOnScrollBehavior替换为了AppBarLayout.ScrollingViewBehavior,后者是用于协调AppBarLayout和滚动内容区的Behavior,和底部控件的滑动隐藏逻辑完全不匹配。
正确实现步骤
1. 前置依赖确认
确保你的项目已经引入了Google Material组件库,版本不低于1.1.0即可支持该Behavior,示例依赖如下(build.gradle(Module level)):
implementation 'com.google.android.material:material:1.9.0'
2. 功能实现代码
直接获取XML中已经配置好的HideBottomViewOnScrollBehavior实例,调用官方提供的显隐方法即可:
// 为RadioGroup设置选中监听,避免单个RadioButton监听冲突 binding.radioGroup.setOnCheckedChangeListener { _, checkedId -> val params = binding.bottomTextView.layoutParams as CoordinatorLayout.LayoutParams val behavior = params.behavior as HideBottomViewOnScrollBehavior<TextView> when(checkedId) { R.id.scroll_up_radioButton -> { // 触发上滑隐藏动画 behavior.slideUp(binding.bottomTextView) } R.id.scroll_down_radioButton -> { // 触发下滑显示动画 behavior.slideDown(binding.bottomTextView) } } }
3. 额外说明
- 如果需要配合可滚动控件(RecyclerView、NestedScrollView等)自动触发显隐,不需要额外编写逻辑,
HideBottomViewOnScrollBehavior会自动识别CoordinatorLayout内的滚动事件完成动画。 - 可通过
behavior.setSlideDuration(300)自定义动画时长,单位为毫秒。 - 如果需要禁止滑动隐藏,仅保留手动控制,可以调用
behavior.setDragEnabled(false)关闭滑动触发逻辑。
内容的提问来源于stack exchange,提问作者Sam Chen
相关产品推荐
相关产品推荐

