From d3f3bfa2a5835cc66d9d4cf9f6dba05607e17c22 Mon Sep 17 00:00:00 2001 From: Krzysztof Sroka Date: Tue, 27 Nov 2018 11:19:41 -0800 Subject: [PATCH] Added `persistentScrollbar` prop in ScrollView component (#22300) Summary: This PR is a follow-up from the closed [discussions-and-proposals PR](https://github.com/react-native-community/discussions-and-proposals/pull/39), that explains in more detail the rationale for adding this feature. Pull Request resolved: https://github.com/facebook/react-native/pull/22300 Reviewed By: fkgozali Differential Revision: D13121748 Pulled By: mdvacca fbshipit-source-id: 899641be79bdb41fa6649df0772c602a5e09b3b9 --- Libraries/Components/ScrollView/ScrollView.js | 8 ++++++++ Libraries/Lists/VirtualizedList.js | 1 + .../views/scroll/ReactHorizontalScrollViewManager.java | 5 +++++ .../react/views/scroll/ReactScrollViewManager.java | 5 +++++ 4 files changed, 19 insertions(+) diff --git a/Libraries/Components/ScrollView/ScrollView.js b/Libraries/Components/ScrollView/ScrollView.js index f1c222526..290541584 100644 --- a/Libraries/Components/ScrollView/ScrollView.js +++ b/Libraries/Components/ScrollView/ScrollView.js @@ -301,6 +301,13 @@ type AndroidProps = $ReadOnly<{| * @platform android */ overScrollMode?: ?('auto' | 'always' | 'never'), + /** + * Causes the scrollbars not to turn transparent when they are not in use. + * The default value is false. + * + * @platform android + */ + persistentScrollbar?: ?boolean, |}>; type VRProps = $ReadOnly<{| @@ -442,6 +449,7 @@ export type Props = $ReadOnly<{| * Note: Vertical pagination is not supported on Android. */ pagingEnabled?: ?boolean, + /** * When false, the view cannot be scrolled via touch interaction. * The default value is true. diff --git a/Libraries/Lists/VirtualizedList.js b/Libraries/Lists/VirtualizedList.js index 9e10cbee4..61af5ea0a 100644 --- a/Libraries/Lists/VirtualizedList.js +++ b/Libraries/Lists/VirtualizedList.js @@ -175,6 +175,7 @@ type OptionalProps = { viewableItems: Array, changed: Array, }) => void, + persistentScrollbar?: ?boolean, /** * Set this when offset is needed for the loading indicator to show correctly. * @platform android diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java index 5ea8096ff..6c7ff1a21 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactHorizontalScrollViewManager.java @@ -255,4 +255,9 @@ public class ReactHorizontalScrollViewManager public void setOverflow(ReactHorizontalScrollView view, @Nullable String overflow) { view.setOverflow(overflow); } + + @ReactProp(name = "persistentScrollbar") + public void setPersistentScrollbar(ReactHorizontalScrollView view, boolean value) { + view.setScrollbarFadingEnabled(!value); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java index 24eaee6d4..b0a77556b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ReactScrollViewManager.java @@ -264,6 +264,11 @@ public class ReactScrollViewManager } } + @ReactProp(name = "persistentScrollbar") + public void setPersistentScrollbar(ReactScrollView view, boolean value) { + view.setScrollbarFadingEnabled(!value); + } + @Override public @Nullable Map getExportedCustomDirectEventTypeConstants() { return createExportedCustomDirectEventTypeConstants();