我想在Android的React Native水平的ScrollView中使用水平ScrollView,其中起始位置在滾動圖像的中間而不是(0,0)。反應原生的Android ScrollView的scrollTo不工作
scrollTo
方法好像在componentDidMount
裏面調用的時候沒有問題,但是在應用程序中沒有任何動作,它仍然顯示爲開始滾動到左邊。
由於這是Android,我無法訪問contentOffset道具,或者根據文檔直接設置。下面是代碼:
'use strict';
var React = require('react-native');
var {
StyleSheet,
View,
Text,
ScrollView,
Component,
} = React;
var precomputeStyle = require('precomputeStyle');
class Carousel extends Component {
constructor(props, context) {
super(props, context);
//this.changeContent = this.changeContent.bind(this);
}
componentDidMount() {
this.myScroll.scrollTo(100);
console.log("called DidMount");
}
render() {
return (
<View style={{flex: 1}}>
<ScrollView ref={(ref) => this.myScroll = ref}
contentContainerStyle={styles.container}
horizontal={true}
pagingEnabled={true}
showsHorizontalScrollIndicator={false}
bounces={true}
onMomentumScrollEnd={this.onAnimationEnd}
>
{this.props.children}
</ScrollView>
</View>
);
}
onAnimationEnd(e) {
console.log("curr offset: " + e.nativeEvent.contentOffset.x);
}
}
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
},
page: {
alignItems: 'center',
justifyContent: 'center',
borderWidth: 1,
},
});
module.exports = Carousel;
你可以嘗試添加Y座標嗎?例如。 'scrollTo(100,0)'。 – Felix
我做了,問題保持不變,如果未指定,缺少的座標默認爲零。 –
我認爲它實際上是'scrollTo(y,x)',但該語法已被棄用。它現在是'scrollTo({x:n,y:n,animated:bool})',正如Rob所說的那樣,根據您的需要,您可以省略'x','y'和'animated'。 – PhilT