From d1ef52951f1d0c3ce6a81b824e67c7c1c1d35862 Mon Sep 17 00:00:00 2001 From: Thomas LECLERCQ Date: Tue, 27 Mar 2018 14:18:56 +0530 Subject: [PATCH] Add android bounce cotrol --- README.md | 2 ++ .../src/main/java/com/rnds/DirectedScrollView.java | 12 +++++++++++- .../java/com/rnds/DirectedScrollViewManager.java | 10 ++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 88c4115..f9c17ba 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ The following props are supported: | `bouncesZoom` | `true` | Whether content bounces at the limits when zooming. | | `alwaysBounceHorizontal` | `false` | When `bounces` is enabled, content will bounce horizontally even if the content is smaller than the bounds of the scroll view. | | `alwaysBounceVertical` | `false` | When `bounces` is enabled, content will bounce vertically even if the content is smaller than the bounds of the scroll view.. | +| **android** `horizontalBounceEnabled` | `true` | If `false`, content will not bounce horizontally. | +| **android** `verticalBounceEnabled` | `true` | If `false`, content will not bounce vertically. | | **ios** `showsVerticalScrollIndicator` | `true` | Whether vertical scroll bars are visible. | | **ios** `showsHorizontalScrollIndicator` | `true` | Whether horizontal scroll bars are visible. | diff --git a/android/src/main/java/com/rnds/DirectedScrollView.java b/android/src/main/java/com/rnds/DirectedScrollView.java index 1095e90..04c5ce0 100644 --- a/android/src/main/java/com/rnds/DirectedScrollView.java +++ b/android/src/main/java/com/rnds/DirectedScrollView.java @@ -31,6 +31,8 @@ public class DirectedScrollView extends ReactViewGroup { private float minimumZoomScale = 1.0f; private float maximumZoomScale = 1.0f; private boolean bounces = true; + private boolean verticalBounceEnabled = true; + private boolean horizontalBounceEnabled = true; private boolean alwaysBounceVertical = false; private boolean alwaysBounceHorizontal = false; private boolean bouncesZoom = true; @@ -214,7 +216,7 @@ private void onActionMove(MotionEvent motionEvent) { scrollY = startScrollY + deltaY; if (bounces) { - clampAndTranslateChildren(false, getMaxScrollY() <= 0 && !alwaysBounceVertical, getMaxScrollX() <= 0 && !alwaysBounceHorizontal); + clampAndTranslateChildren(false, !verticalBounceEnabled || (getMaxScrollY() <= 0 && !alwaysBounceVertical), !horizontalBounceEnabled || (getMaxScrollX() <= 0 && !alwaysBounceHorizontal)); } else { clampAndTranslateChildren(false); } @@ -433,6 +435,14 @@ public void setBouncesZoom(final boolean bouncesZoom) { this.bouncesZoom = bouncesZoom; } + public void setVerticalBounceEnabled(final boolean verticalBounceEnabled) { + this.verticalBounceEnabled = verticalBounceEnabled; + } + + public void setHorizontalBounceEnabled(final boolean horizontalBounceEnabled) { + this.horizontalBounceEnabled = horizontalBounceEnabled; + } + public void setAlwaysBounceHorizontal(final boolean alwaysBounceHorizontal) { this.alwaysBounceHorizontal = alwaysBounceHorizontal; } diff --git a/android/src/main/java/com/rnds/DirectedScrollViewManager.java b/android/src/main/java/com/rnds/DirectedScrollViewManager.java index ed24e24..8616946 100644 --- a/android/src/main/java/com/rnds/DirectedScrollViewManager.java +++ b/android/src/main/java/com/rnds/DirectedScrollViewManager.java @@ -89,6 +89,16 @@ public void setBouncesZoom(DirectedScrollView view, @Nullable boolean bouncesZoo view.setBouncesZoom(bouncesZoom); } + @ReactProp(name = "verticalBounceEnabled", defaultBoolean = true) + public void setVerticalBounceEnabled(DirectedScrollView view, @Nullable boolean verticalBounceEnabled) { + view.setVerticalBounceEnabled(verticalBounceEnabled); + } + + @ReactProp(name = "horizontalBounceEnabled", defaultBoolean = true) + public void setHorizontalBounceEnabled(DirectedScrollView view, @Nullable boolean horizontalBounceEnabled) { + view.setHorizontalBounceEnabled(horizontalBounceEnabled); + } + @ReactProp(name = "alwaysBounceHorizontal", defaultBoolean = false) public void setAlwaysBounceHorizontal(DirectedScrollView view, @Nullable boolean alwaysBounceHorizontal) { view.setAlwaysBounceHorizontal(alwaysBounceHorizontal);