5

我想让我的水平 FlatList(启用分页)向左或向右滚动,以使内容始终位于屏幕中心,并且下一个和上一个内容仍然出现。

像这样的东西(用于水平动作)在此处输入图像描述

但不幸的是,当平面列表滚动时,滚动的长度与平面列表或其父级的宽度相同,我无法达到我想要的效果。 应用程序的打印

4

3 回答 3

15

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

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

您可以查看展示柜,了解使用它可以实现的目标。如果您决定尝试一下,请随时与我们分享您的反馈;我们一直在努力改进它。

react-native-snap-carousel archriss 展示 react-native-snap-carousel archriss aix


编辑:版本中引入了两种新布局3.6.0(一种具有一堆卡片效果,另一种具有类似火种的效果)。享受!

react-native-snap-carousel 堆栈布局 react-native-snap-carousel 火种布局

于 2017-08-03T14:23:16.987 回答
11

我使用了 react-native-snap-carousel,虽然动画和自定义非常好,但很难设置样式,因为它的行为不像普通视图,并且不能在 ScrollView 中正确呈现。

相反,我使用此页面中的一些说明恢复到正常的 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
/>
于 2020-01-06T10:10:25.327 回答
2

为此,使用库可能会更好地为您服务。对于相同的用例,我已经习惯react-native-carousel了很好的成功。Github在这里。您的代码将如下所示:

import Carousel from 'react-native-carousel'

getListItems() {
   return [ <View>...</View>, <View>...</View>]
}

render() {
   return (
      <Carousel>
         {this.getListItems()}
      </Carousel>
   )
}
于 2017-06-02T22:12:31.920 回答