在特定滚动距离后隐藏底部导航栏

时间:2021-01-30 23:08:24

标签: android android-coordinatorlayout bottomnavigationview

我想实现一个自定义行为,仅在向下滚动时达到特定滚动距离后才隐藏底部导航栏,但在向上滚动时立即显示回来。

这是我迄今为止所做的。

    class BottomNavigationBehavior<V : View>(context: Context, attrs: AttributeSet) :
    CoordinatorLayout.Behavior<V>(context, attrs) {

    override fun onStartNestedScroll(
        coordinatorLayout: CoordinatorLayout, child: V, directTargetChild: View, target: View, axes: Int, type: Int
    ): Boolean {
        return axes == ViewCompat.SCROLL_AXIS_VERTICAL
    }

    override fun onNestedPreScroll(
        coordinatorLayout: CoordinatorLayout, child: V, target: View, dx: Int, dy: Int, consumed: IntArray, type: Int
    ) {
        super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type)
        child.translationY = max(0f, min(child.height.toFloat(), child.translationY + dy))
    }
}

这行得通,但当用户开始向上/向下滚动时,它会立即显示/隐藏底部栏,这不是我想要的。

0 个答案:

没有答案