繁体   English   中英

在 FlatList 中仅禁用水平滚动

[英]Disable only horizontal scrolling in FlatList

如何在我的 FlatList 上仅禁用水平滚动? 将其设置为 false 不起作用。 我希望能够垂直滚动而不是水平滚动。

<FlatList
              data={data.me.friends.nodes}
              //horizontal={false}
              //scrollEnabled={false}
              renderItem={({ item }) => (
                <FriendItem friend={item} originatorId={data.me.id}/>
              )}
              keyExtractor={(item) => item.id.toString()}
              ListEmptyComponent={NoFriendsContainer}
            />

FriendItem 的回归。 FriendItem 是在 FlatList 中使用的 renderItem:

  return (
    <View style={styles.item}>
      <TouchableOpacity
        onPress={() =>
          navigation.navigate('FriendDetails')
        }>
        <Thumbnail
          style={styles.thumbnail}
          source={{
            uri:
              'https://cdn4.iconfinder.com/person-512.png',
          }}></Thumbnail>
      </TouchableOpacity>
      <View style={styles.nameContainer}>
        <Text style={styles.userName}>{userName}</Text>
      </View>
      <View style={styles.deleteButtonContainer}>
        <Button
          rounded
          style={styles.deleteButton}
          onPress={() => onDeleteFriend(originatorId, friend.id)}>
          <Icon name="trash-o" size={moderateScale(20)} color="black" />
        </Button>
      </View>
    </View>
  );
};

Styles:

export const styles = StyleSheet.create({
  item: {
    backgroundColor: 'white',
    borderRadius: moderateScale(20),
    padding: moderateScale(20),
    marginVertical: moderateScale(8),
    marginHorizontal: 16,
    height: moderateScale(110),
    width: moderateScale(360),
    justifyContent: 'space-between',
    flexDirection: 'row',
  },
  userName: {
    paddingRight: 55,
    paddingLeft: 10,
    paddingTop: 20,
  },
  deleteButton: {
    backgroundColor: '#31C283',
    width: moderateScale(45),
    justifyContent: 'center',
  },
  deleteButtonContainer: {
    paddingTop: 12,
    marginRight: 2,
  },
  thumbnail: {
    height: 85,
    width: 85,
    marginLeft: 2,
    paddingRight: 0,
    position: 'relative',
  },
  nameContainer: {
    flexDirection: 'row',
  },
});

编辑:

当有 4 个项目时,似乎还可以,但是一旦将另一个项目添加到列表中,最后一个项目就会受到干扰并与页脚重叠? 的应用程序。

它实际上应该在它后面,以便我们可以向下滚动并查看下一个项目。

在此处输入图像描述

horizontal参数与水平滚动无关。

https://reactnative.dev/docs/flatlist#horizontal

If true, renders items next to each other horizontally instead of stacked vertically.

您的“滚动问题”是您的FriendItem ,问题是width: moderateScale(360)

如果您希望您的项目是全宽的,带有边距,您可以将其删除。

moderateScale(360)示例具有中等比例(360)的图像

示例移除width

 item: {
      backgroundColor: "white",
      borderRadius: moderateScale(20),
      padding: moderateScale(20),
      marginVertical: moderateScale(8),
      marginHorizontal: 16,
      height: moderateScale(110),
      justifyContent: "space-between",
      flexDirection: "row",
    }

没有宽度参数

希望它可以帮助你。 问候,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM