FlatList 动态高度调整

问题描述 投票:0回答:4

我有一个自动完成框,它为我提供了自动完成项目的列表。我在 FlatList 中显示项目,FlatList 周围还有边框。我的代码如下:-

render(){
return (
  <View>
    <TextInput
       clearButtonMode="while-editing"
       onChangeText={this.onChangeText}
       value={this.state.searchText}
       onSubmitEditing={this.onTextSubmitted}
       placeholder="Find..." />
       {this.state.data.length > 0 &&
        <FlatList
           style={styles.list}
           keyboardShouldPersistTaps="handled"
           data={this.state.data}
           ItemSeparatorComponent={this.renderSeparator}
           keyExtractor={item => item.properties.id}
           renderItem={this.renderItem} />});
}

const styles = StyleSheet.create({
list: {
    borderWidth: 16,
    borderColor: colors.searchBorder,
  },
});

如何根据列表项的数量增加/减少 FlatList 的大小(我认为边框是此错误背后的原因)。

Sample Image

react-native react-native-listview react-native-flatlist
4个回答
90
投票

flexGrow: 0
添加到您的列表样式。


3
投票

根据您的要求添加 flexGrow: 0 和 minHeight

 container: {
        flex: 1,
        flexGrow: 0,
        minHeight: 70,
        flexDirection: 'row',
        alignItems: 'center',          
    },

1
投票

编辑:上面的解决方案已被较新版本的react-native

弃用

我遇到了同样的问题,上面的解决方案对我来说不起作用。

对我来说,解决方案是将 FlatList 包装到 ScrollView 中,如下所示:

<ScrollView>
  <FlatList
      data={this.state.listItem}
      renderItem={this.renderItem}
  />
</ScrollView>

动态高度将由 ScollView 父级管理。

请参阅文档此处


-1
投票

边框只是当前 FlatList 组件边界的指示符。如果您希望列表增大和缩小,请尝试将

flex: 1
添加到列表样式属性中。

const styles = StyleSheet.create({
  list: {
    borderWidth: 16,
    borderColor: colors.searchBorder,
    flex: 1
  },
})
© www.soinside.com 2019 - 2024. All rights reserved.