javascript 如何在react native中设置视图的自动高度

mklgxw1f  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(130)

我有一个react native应用程序,它从API中获取数据,在这个api中,每个api都包含新闻主题,图片和细节我有问题,在设置每个项目的高度自动高度我试图设置容器的高度为100,然后主题和细节只是相互重叠,所以我把它设置为300,它'的项目,有长文本,但问题的项目,有短文本,使这些项目之间的空间变得太大,所以我如何设置高度自动,使我每个项目将有高度关于它的内容
这是每个项目的类:

import React, { Component } from "react"
import { View, Image, Text, StyleSheet } from "react-native"

export default class Item extends Component {
    render() {
        let { item } = this.props;
        const { subject, picture, details } = item;
        return (
            <View style={styles.container}>
                <Image style={styles.picture} resizeMode="cover" source={{ uri: picture }} />
                {console.log(image)}

                <View style={styles.content}>
                    <Text style={styles.subject}>{subject}</Text>
                    <Text style={styles.details}>{details}</Text>
                </View>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        height: 300,
        flexDirection: "row",
        flex: 1,
        padding: 10
    },
    content: {
        flexDirection: "column",
        flex: 1
    },
    picture: {
        height: 70,
        width: 100
    },
    subject: {
        marginLeft: 20,
        fontSize: 16,
        fontWeight: 'bold'
    },
    details: {
        marginLeft: 20,
        fontSize: 16,
    }
})
r1zk6ea1

r1zk6ea11#

跳过为容器提供高度,您将拥有动态需要的高度,并从图像中删除高度,以便它根据正在渲染的文本占据最终容器高度的高度。
您的样式表应该如下所示:

const styles = StyleSheet.create({
    container: {
        flexDirection: "row",
        //flex: 1, - remove this as this doesn't make any sense here.
        padding: 10
    },
    content: {
        flexDirection: "column",
        flex: 1,
        paddingLeft: 10, //if you need separation.
    },
    picture: {
        //height: 70, - commenting this will make it automatically ataining height as per your text grows.
        width: 100
    },
    subject: {
        marginLeft: 20,
        fontSize: 16,
        fontWeight: 'bold'
    },
    details: {
        marginLeft: 20,
        fontSize: 16,
    }
})
shstlldc

shstlldc2#

这里是2022年11月。一些人提供的解决方案是正确的,但需要颠倒。如果你试图让你的滚动在你的父母,这是什么工作,我

const windowHeight = Dimensions.get("window").height;

<View style={{height: windowHeight}}>
...
<ScrollView contentContainerStyle={{flexGrow:1}}>...</ScrollView>
</View>

希望这对正在查看此内容的人有效

相关问题