Próbuję użyć poziomego ScrollView w React Native dla Androida, gdzie pozycja początkowa znajduje się pośrodku przewijanych obrazów, a nie (0,0).Reaguj na natywną przewijarkę Android ScrollViewNie działa
Metoda wydaje się być poprawnie wywoływana wewnątrz componentDidMount
, ale nic nie porusza się w aplikacji, nadal pokazuje się jako początek przewijania do końca w lewo.
Ponieważ to jest Android, nie mam dostępu do rekwizytów contentOffset lub ustawiłbym to bezpośrednio, zgodnie z dokumentacją. Oto kod:
'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;
Czy możesz spróbować dodać również współrzędną Y? Na przykład. 'scrollTo (100, 0)'. – Felix
Zrobiłem i problem pozostaje taki sam, brakująca współrzędna domyślnie wynosi zero, jeśli nie jest określona. –
Myślę, że w rzeczywistości jest to 'scrollTo (y, x)' ale ta składnia jest przestarzała. Teraz jest to 'scrollTo ({x: n, y: n, animated: bool})' i jak wspomniał Rob, możesz pominąć 'x',' y' i 'animated' w zależności od twoich potrzeb. – PhilT