如何在 React Native 中改变 <FlatList/> 的高度?

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

我想改变

<FlatList />
的宽度和高度。

我将

height
样式设置为当前
<FlatList />
但它从未起作用。

我无法改变

<FlatList />
的高度。

这是我的

render()
功能和样式。

render() {
    const listData = [];
    listData.push({ key: 0 });
    listData.push({ key: 1 });
    listData.push({ key: 2 });
    listData.push({ key: 3 });
    listData.push({ key: 4 });
    return (
        <View style={styles.container}>
            <FlatList
                data={listData}
                renderItem={({item}) => {
                    return (
                        <View
                            style={{
                                width: 30, height: 30, borderRadius: 15, backgroundColor: 'green'
                            }}
                        />
                    )
                }}
                horizontal
                style={styles.flatList}
            />
        </View>
    );
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: 'white'
    },
    flatList: {
        height: 50,
        backgroundColor: 'red'
    }
});

这是这段代码的结果。

Current result

我花了几个小时才找到答案,但没有任何帮助。

我不确定为什么高度样式不起作用。

react-native react-native-flatlist
9个回答
97
投票

flexGrow: 0
添加到 flatList 样式对我有用,所以它将是:

flatList: {
  height: 50,
  backgroundColor: 'red',
  flexGrow: 0
}

84
投票

设置

<View/>
的高度并将
<FlatList/>
放置在
<View/>

内部

9
投票

添加

flexGrow: 0
。别说高度了,响应式设计可能会被破坏

示例:

<FlatList
  style={{
    flexGrow: 0,
  }}
  data={data}
  renderItem={({item}) => (
    <View>
      <Text>{item.text}</Text>
    </View>
  )}
/>

2
投票

FlatList 有属性 contentContainerStyle。您可以使用它来设计 FlatList 周围的包装器样式。 FlatList 继承了 ScrollView 的这个 prop readhear


2
投票

你可以将

flexGrow: 0
添加到对我有用的 flatList 样式中,所以它将是:

  <FlatList
   {...{otherProps}}
    style={{
      height: 50,
      backgroundColor: 'red',
      flexGrow: 0
    }}
    />

0
投票

根据数据给出宽度和高度

 <View style={{maxHeight:"50%",width:"60%"}}>
       <FlatList
            data={this.props.data}
            renderItem={({ item }) => <Text>{item.name}</Text>}
            keyExtractor={(item, index) => index}
        />
 </View>

0
投票
<View style={styles.flatList}>
   <FlatList
      keyExtractor = { this.keyExtractor }
      data = { this.getPOs() }
      ListEmptyComponent = { this.renderEmpty }
      ItemSeparatorComponent = { Separator }
      renderItem = { this.renderItem }
   />
</View>

对我来说,将 flex: 1 添加到视图中

const styles = StyleSheet.create({
    flatList: {
        flex: 1,
    }
})

0
投票

要更改

<FlatList />
的高度,您可以将其包裹在
<View />
内并设置
<View />
的高度。这种方法可以让您更好地控制列表的布局和尺寸。

这是一个例子:

import React from 'react';
import { FlatList, View, StyleSheet } from 'react-native';

const App = () => {
  const listData = [
    { key: '1' },
    { key: '2' },
    { key: '3' },
    { key: '4' },
    { key: '5' },
  ];

  return (
    <View style={styles.container}>
      <View style={styles.flatListContainer}>
        <FlatList
          data={listData}
          renderItem={({ item }) => (
            <View style={styles.item} />
          )}
          horizontal
          style={styles.flatList}
        />
      </View>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: 'white',
  },
  flatListContainer: {
    height: 100, // Set the desired height here
    backgroundColor: 'red',
  },
  flatList: {
    // Remove height from here if it was set
  },
  item: {
    width: 30,
    height: 30,
    borderRadius: 15,
    backgroundColor: 'green',
  },
});

export default App;


-1
投票
render() {
  const listData = [];
  listData.push({ key: 0 });
  listData.push({ key: 1 });
  listData.push({ key: 2 });
  listData.push({ key: 3 });
  listData.push({ key: 4 });
  return (
      <View style={styles.container}>
          <FlatList
              data={listData}
              renderItem={({item}) => {
                  return (
                      <View
                          style={{
                              width: 30, height: 30, borderRadius: 15, backgroundColor: 'green'
                          }}
                      />
                  )
              }}
              horizontal
              style={styles.flatList}
          />
      </View>
  );
}

const styles = StyleSheet.create({
  container: {
      height:100
      justifyContent: 'center',
      alignItems: 'center',
      backgroundColor: 'white'
  },
  flatList: {
      backgroundColor: 'red'
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.