From 0d5d9cc4f0f5caff3a198a881c89090e47ad44f6 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Wed, 25 May 2016 11:58:02 +0200 Subject: Fixed behavior when ScrollView is not long enough --- .../AHBottomNavigationBehavior.java | 31 ++++++++++++++++------ 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/ahbottomnavigation/src/main/java/com/aurelhubert/ahbottomnavigation/AHBottomNavigationBehavior.java b/ahbottomnavigation/src/main/java/com/aurelhubert/ahbottomnavigation/AHBottomNavigationBehavior.java index 5e5b900..bebdee7 100644 --- a/ahbottomnavigation/src/main/java/com/aurelhubert/ahbottomnavigation/AHBottomNavigationBehavior.java +++ b/ahbottomnavigation/src/main/java/com/aurelhubert/ahbottomnavigation/AHBottomNavigationBehavior.java @@ -38,6 +38,9 @@ public class AHBottomNavigationBehavior extends VerticalScrollin private float targetOffset = 0, fabTargetOffset = 0, fabDefaultBottomMargin = 0, snackBarY = 0; private boolean behaviorTranslationEnabled = true; + /** + * Constructor + */ public AHBottomNavigationBehavior() { super(); } @@ -91,7 +94,26 @@ public class AHBottomNavigationBehavior extends VerticalScrollin @Override public void onDirectionNestedPreScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dx, int dy, int[] consumed, @ScrollDirection int scrollDirection) { - handleDirection(child, scrollDirection); + } + + @Override + protected boolean onNestedDirectionFling(CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY, @ScrollDirection int scrollDirection) { + return false; + } + + @Override + public void onNestedScroll(CoordinatorLayout coordinatorLayout, V child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { + super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); + if (dyConsumed < 0) { + handleDirection(child, ScrollDirection.SCROLL_DIRECTION_DOWN); + } else if (dyConsumed > 0) { + handleDirection(child, ScrollDirection.SCROLL_DIRECTION_UP); + } + } + + @Override + public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, V child, View directTargetChild, View target, int nestedScrollAxes) { + return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL || super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); } /** @@ -112,12 +134,6 @@ public class AHBottomNavigationBehavior extends VerticalScrollin } } - @Override - protected boolean onNestedDirectionFling(CoordinatorLayout coordinatorLayout, V child, View target, float velocityX, float velocityY, @ScrollDirection int scrollDirection) { - handleDirection(child, scrollDirection); - return true; - } - /** * Animate offset * @@ -128,7 +144,6 @@ public class AHBottomNavigationBehavior extends VerticalScrollin if (!behaviorTranslationEnabled && !forceAnimation) { return; } - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { ensureOrCancelObjectAnimation(child, offset, withAnimation); translationObjectAnimator.start(); -- cgit v1.2.3