diff --git a/Libraries/Components/ViewPager/ViewPagerAndroid.android.js b/Libraries/Components/ViewPager/ViewPagerAndroid.android.js index c43ee197045..50a88337b7a 100644 --- a/Libraries/Components/ViewPager/ViewPagerAndroid.android.js +++ b/Libraries/Components/ViewPager/ViewPagerAndroid.android.js @@ -123,6 +123,12 @@ var ViewPagerAndroid = React.createClass({ 'none', // default 'on-drag', ]), + + /** + * When false, the content does not scroll. + * The default value is true. + */ + scrollEnabled: React.PropTypes.bool, }, componentDidMount: function() { diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPager.java b/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPager.java index c522e039156..85fc79c9782 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPager.java @@ -125,6 +125,7 @@ import com.facebook.react.uimanager.events.NativeGestureUtil; private final EventDispatcher mEventDispatcher; private boolean mIsCurrentItemFromJs; + private boolean mScrollEnabled = true; public ReactViewPager(ReactContext reactContext) { super(reactContext); @@ -141,19 +142,31 @@ import com.facebook.react.uimanager.events.NativeGestureUtil; @Override public boolean onInterceptTouchEvent(MotionEvent ev) { - if (super.onInterceptTouchEvent(ev)) { + if (mScrollEnabled && super.onInterceptTouchEvent(ev)) { NativeGestureUtil.notifyNativeGestureStarted(this, ev); return true; } return false; } + @Override + public boolean onTouchEvent(MotionEvent ev) { + if (!mScrollEnabled) { + return false; + } + return super.onTouchEvent(ev); + } + public void setCurrentItemFromJs(int item, boolean animated) { mIsCurrentItemFromJs = true; setCurrentItem(item, animated); mIsCurrentItemFromJs = false; } + public void setScrollEnabled(boolean scrollEnabled) { + mScrollEnabled = scrollEnabled; + } + /*package*/ void addViewToAdapter(View child, int index) { getAdapter().addView(child, index); } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPagerManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPagerManager.java index 710f2a4ebb3..093ef0fd831 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPagerManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/viewpager/ReactViewPagerManager.java @@ -43,6 +43,12 @@ public class ReactViewPagerManager extends ViewGroupManager { return new ReactViewPager(reactContext); } + + @ReactProp(name = "scrollEnabled", defaultBoolean = true) + public void setScrollEnabled(ReactViewPager viewPager, boolean value) { + viewPager.setScrollEnabled(value); + } + @Override public boolean needsCustomLayoutForChildren() { return true;