我想让我的水平FlatList(启用分页)向左或向右滚动,内容始终位于屏幕中央,下一个和之前的内容仍然显示。
答案 0 :(得分:11)
我们公司有类似的需求,但现有的插件都没有完全满足我们的使用案例。我们最终创建了自己的并开源:react-native-snap-carousel
。
该插件现在构建在FlatList
(版本> = 3.0.0)之上,并提供预览(您所追求的效果),捕捉效果,视差图片, RTL支持等。
您可以查看showcase以了解可以通过它实现的目标。如果您决定尝试一下,请不要犹豫与我们分享您的反馈意见;我们总是试图改进它。
编辑:two new layouts已在版本3.6.0
中引入(一个具有一叠卡片效果,另一个具有类似火种的效果)。享受!
答案 1 :(得分:3)
我使用了react-native-snap-carousel,虽然动画和自定义效果非常好,但是很难设置样式,因为它的行为不像普通视图,并且不能在ScrollView中正确呈现。
相反,我根据this page
的一些说明还原为普通的FlatList设置:
<FlatList
data={this.data}
renderItem={this._renderItem}
keyExtractor={this._keyExtractor}
horizontal={true} // row instead of column
// Add the 4 properties below for snapping
snapToAlignment={"start"}
snapToInterval={this.IMAGE_WIDTH + 10} // Adjust to your content width
decelerationRate={"fast"}
pagingEnabled
/>
答案 2 :(得分:2)
使用库可能会更好。我已经使用react-native-carousel
在相同的用例中取得了很好的成功。 Github here。您的代码看起来像这样:
import Carousel from 'react-native-carousel'
getListItems() {
return [ <View>...</View>, <View>...</View>]
}
render() {
return (
<Carousel>
{this.getListItems()}
</Carousel>
)
}