Swiper使用React Native的FlatList

时间:2017-06-02 20:50:32

标签: react-native react-native-flatlist

我想让我的水平FlatList(启用分页)向左或向右滚动,内容始终位于屏幕中央,下一个和之前的内容仍然显示。

像这样(对于水平动作)enter image description here

但不幸的是,当平面列表滚动时,滚动的长度与平面列表或其父级的宽度相同,我可以得到我想要的效果。 print of the app

3 个答案:

答案 0 :(得分:11)

我们公司有类似的需求,但现有的插件都没有完全满足我们的使用案例。我们最终创建了自己的并开源:react-native-snap-carousel

该插件现在构建在FlatList(版本> = 3.0.0)之上,并提供预览(您所追求的效果),捕捉效果视差图片 RTL支持等。

您可以查看showcase以了解可以通过它实现的目标。如果您决定尝试一下,请不要犹豫与我们分享您的反馈意见;我们总是试图改进它。

react-native-snap-carousel archriss showcase react-native-snap-carousel archriss aix

编辑:two new layouts已在版本3.6.0中引入(一个具有一叠卡片效果,另一个具有类似火种的效果)。享受!

react-native-snap-carousel stack layout react-native-snap-carousel tinder layout

答案 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>
   )
}