在我的react原生应用程序中,我创建了一个屏幕来显示某个列表,并在平面列表中配置了一个“renderEmpty”方法,以便在列表不为空时显示一个图像来代替列表。我能够水平对齐图像,但不能垂直对齐。我做错了什么?我希望你的帮助,以实现这一垂直对齐
按照下面的代码:
import {
StyleSheet,
SafeAreaView,
FlatList,
TouchableOpacity,
View,
Text,
Image
} from 'react-native';
export default function App() {
const list = [];
const renderEmpty = () => (
<View style={styles.emptyListContainer}>
<Image
source={require('./assets/empty-list.png')}
style={styles.emptyListImage}
/>
<Text style={styles.emptyListText}>No content</Text>
</View>
);
const renderItem = ({ item, index }) => {
return (
<View style={styles.listItem}>
<View style={styles.itemContainer}>
<TouchableOpacity>
<Text style={styles.item}>{item.nome}</Text>
</TouchableOpacity>
</View>
</View>
);
}
return (
<SafeAreaView style={styles.container}>
<View style={{flex: 1}}>
<FlatList
style={{flex:1}}
keyExtractor={item => item.id}
data={list}
renderItem={({ item }) => renderItem({item})}
ListEmptyComponent={renderEmpty}
onEndReachedThreshold={0.2}
/>
</View>
</SafeAreaView>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
marginTop:15,
},
listItem:{
elevation: 5,
width:"95%",
margin: 3,
marginBottom: 7,
flex: 1,
alignSelf:"center",
flexDirection:"row",
borderRadius:5
},
itemContainer: {
flex: 1,
padding: 20,
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center"
},
item: {
color: 'black',
fontWeight: "800",
fontSize: 24,
fontFamily: 'helvetica'
},
emptyListContainer: {
flex: 1,
alignItems: 'center',
justifyContent: 'center'
},
emptyListImage: {
width: 200,
height: 200,
},
emptyListText: {
fontSize: 18,
fontWeight: 'bold',
marginTop: 20,
}
});
代码可在https://snack.expo.dev/d7HXkFB3c上获得
谢谢!
1条答案
按热度按时间rryofs0p1#
您的FlatList需要以下 prop
FlatLists建立在ScrollViews之上。ScrollViews包含两个视图:一个外部视图和一个内部视图,内部视图保存内容(contentContainer)。
style
属性样式化外部视图;contentContainerStyle
设置内部视图的样式。你的内心世界并不知道如何填补外在世界的空间。您可以在这里阅读更多关于contentContainerStyle的信息:https://reactnative.dev/docs/scrollview#contentcontainerstyle