mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-02-07 22:42:13 +08:00
Add onPageScrollStateChanged for ViewPagerAndroid
Summary: I have an issue when combining `PullToRefreshViewAndroid` and `ViewPagerAndroid`. `ViewPagerAndroid` will not able to scroll that gesture handler is being taken by `PullToRefreshViewAndroid` One solution is to disable `PullToRefreshViewAndroid` if `ViewPagerAndroid` is scrolling (i.e. not idle). [Reference solution here](http://stackoverflow.com/a/29946734/2590265) So here need to expose the `onPageScrollStateChanged` event. Some code referenced from DrawerLayoutAndroid, especially the `VIEWPAGER_PAGE_SCROLL_STATES` array. Please feel free give me comments. Thanks. Closes https://github.com/facebook/react-native/pull/5026 Reviewed By: svcscm Differential Revision: D2830623 Pulled By: andreicoman11 fb-gh-sync-id: c2a6920c6f4c7daab0115f13864db83b93b31abf
This commit is contained in:
committed by
facebook-github-bot-9
parent
5e82094fcb
commit
8de86a0d65
@@ -25,6 +25,8 @@ var {
|
||||
ViewPagerAndroid,
|
||||
} = React;
|
||||
|
||||
import type { ViewPagerScrollState } from 'ViewPagerAndroid';
|
||||
|
||||
var PAGES = 5;
|
||||
var BGCOLOR = ['#fdc08e', '#fff6b9', '#99d1b7', '#dde5fe', '#f79273'];
|
||||
var IMAGE_URIS = [
|
||||
@@ -114,6 +116,10 @@ var ViewPagerAndroidExample = React.createClass({
|
||||
this.setState({progress: e.nativeEvent});
|
||||
},
|
||||
|
||||
onPageScrollStateChanged: function(state : ViewPagerScrollState) {
|
||||
this.setState({scrollState: state});
|
||||
},
|
||||
|
||||
move: function(delta) {
|
||||
var page = this.state.page + delta;
|
||||
this.go(page);
|
||||
@@ -155,6 +161,7 @@ var ViewPagerAndroidExample = React.createClass({
|
||||
initialPage={0}
|
||||
onPageScroll={this.onPageScroll}
|
||||
onPageSelected={this.onPageSelected}
|
||||
onPageScrollStateChanged={this.onPageScrollStateChanged}
|
||||
ref={viewPager => { this.viewPager = viewPager; }}>
|
||||
{pages}
|
||||
</ViewPagerAndroid>
|
||||
@@ -170,6 +177,7 @@ var ViewPagerAndroidExample = React.createClass({
|
||||
enabled={true}
|
||||
onPress={() => this.setState({animationsAreEnabled: true})}
|
||||
/> }
|
||||
<Text style={styles.scrollStateText}>ScrollState[ {this.state.scrollState} ]</Text>
|
||||
</View>
|
||||
<View style={styles.buttons}>
|
||||
<Button text="Start" enabled={page > 0} onPress={() => this.go(0)}/>
|
||||
@@ -207,6 +215,9 @@ var styles = StyleSheet.create({
|
||||
buttonText: {
|
||||
color: 'white',
|
||||
},
|
||||
scrollStateText: {
|
||||
color: '#99d1b7',
|
||||
},
|
||||
container: {
|
||||
flex: 1,
|
||||
backgroundColor: 'white',
|
||||
|
||||
Reference in New Issue
Block a user