我有一个水平的Flatlist
,其中的元素可以有不同的高度,我如何获得所有元素或特定可见元素的高度,并根据元素的高度改变Flatlist
的高度?
我在Snack上做了一个和我的代码很接近的代码。在这个例子中,高度以data
为单位,在我的代码中,我不知道这个高度。
我将非常感谢你的帮助!
import React from 'react';
import { View, StyleSheet, FlatList, Text, Dimensions } from 'react-native';
const {width} = Dimensions.get('window');
const Item = ({item}) => {
return (
<View style={{width, height: item.height, backgroundColor: 'yellow'}}>
<Text>{item.type}</Text>
<Text>{item.text}</Text>
</View>
);
};
export default function App() {
const data = [
{
height: 100, //FOR EXAMPLE
type: 'row 1',
text: 'row 1'
},
{
height: 200, //FOR EXAMPLE
type: 'row 2',
text: 'row 2'
},
{
height: 150, //FOR EXAMPLE
type: 'row 3',
text: 'row 3'
},
];
return (
<View>
<FlatList
style={{backgroundColor: 'red'}}
data={data}
keyExtractor={item => item.id}
renderItem={({item}) => (
<Item item={item} />
)
}
horizontal
pagingEnabled
/>
</View>
);
}
1条答案
按热度按时间ulydmbyx1#
我不知道你的主要目标是什么,但假设你希望所有的项目都是相同的高度(由高度最大的项目给定),你可以使用
onLayout
来获得最大的值。您也可以尝试在FlatList上使用
itemHeight
,看看效果如何。