我正在尝试在本机中设置ListView的初始滚动位置。
现在,我正在这样做:
componentDidMount() {
let i = this.props.images.indexOf(this.props.current);
if(i != -1) {
this.refs.listView.scrollTo({ x:i*this.props.width, y:0, animated:false });
}
}
其中images
prop是ListView的数据源,current
prop是我想要最初滚动到的位置,width
prop是组件的宽度。 (组件水平滚动)。
这样可行,但是在初始渲染和对componentDidMount
的调用之间存在延迟,在滚动列表之前给我一个列表末尾的闪存。
有没有办法设置列表的初始滚动位置?或者更好的方法是摆脱闪光灯?
答案 0 :(得分:4)
在iOS上,您可以使用ScrollView#contentOffset
设置ListView的初始滚动位置,该位置继承ScrollView
的属性。
如果您正在寻找Android解决方案,那么您调用的ListView.scrollTo
方法似乎是一般情况下的最佳选择。
那就是说,如果我正确地解释你的代码示例,你可以使用ListView作为分页的水平列表,也许是在pagingEnabled
属性的帮助下?如果是这种情况,在Android上您可能会考虑使用ViewPagerAndroid
,并设置initialPage
属性。