From 6bd7555c5f43ded7856ffd8b4b02662e772ba689 Mon Sep 17 00:00:00 2001 From: aamalric Date: Wed, 19 Jun 2019 10:09:46 +0200 Subject: [PATCH] Prevent scrollView to scroll with dpad when scrollEnabled property is set to false. --- .../react/views/scroll/ReactHorizontalScrollView.java | 10 ++++++++++ .../facebook/react/views/scroll/ReactScrollView.java | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java index 4d97b76e90a475..8ad700dd885b83 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollView.java @@ -18,6 +18,7 @@ import androidx.core.view.ViewCompat; import androidx.core.text.TextUtilsCompat; import android.util.Log; +import android.view.KeyEvent; import android.view.FocusFinder; import android.view.MotionEvent; import android.view.View; @@ -411,6 +412,15 @@ public boolean onTouchEvent(MotionEvent ev) { return super.onTouchEvent(ev); } + @Override + public boolean executeKeyEvent(KeyEvent event) { + int eventKeyCode = event.getKeyCode(); + if (!mScrollEnabled && (eventKeyCode == KeyEvent.KEYCODE_DPAD_LEFT || eventKeyCode == KeyEvent.KEYCODE_DPAD_RIGHT)) { + return false; + } + return super.executeKeyEvent(event); + } + @Override public void fling(int velocityX) { diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java index de0fc82ee66b27..7acaf7c1bc0604 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollView.java @@ -14,6 +14,7 @@ import android.graphics.drawable.Drawable; import androidx.core.view.ViewCompat; import android.util.Log; +import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -300,6 +301,15 @@ public boolean onTouchEvent(MotionEvent ev) { return super.onTouchEvent(ev); } + @Override + public boolean executeKeyEvent(KeyEvent event) { + int eventKeyCode = event.getKeyCode(); + if (!mScrollEnabled && (eventKeyCode == KeyEvent.KEYCODE_DPAD_DOWN || eventKeyCode == KeyEvent.KEYCODE_DPAD_UP)) { + return false; + } + return super.executeKeyEvent(event); + } + @Override public void setRemoveClippedSubviews(boolean removeClippedSubviews) { if (removeClippedSubviews && mClippingRect == null) {