You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:39:02