React Native - Flex定位

React Native - Flex定位 首页 / React Native入门教程 / React Native - Flex定位

在上一篇文章“布局和Flexbox"中,我们讨论了Flexbox及其属性。在本教程中,我们将使用Flex设置元素的位置。

例1

创建一个View组件,并放置两个元素TextInput和Button。具有flex属性(1)的View组件占据了设备的全部空间。元素TextInput和Button在默认的flex axis中设置(作为列)。

import React, { Component } from "react";
import { StyleSheet, TextInput, View , Button } from "react-native";

export default class App extends Component {
    state = {
        placeName: "",
        places: []
    };

    placeNameChangedHandler = val => {
        this.setState({
            placeName: val
        });
    };

    placeSubmitHandler = () => {
        alert("button clicked")
    };

    render() {
        return (
            <View style={styles.container}>
                <TextInput
                        placeholder="An awesome place"
                        onChangeText={this.placeNameChangedHandler}
                        style={styles.placeInput}
                />
                <Button
                        title="Button"
                        onPress={this.placeSubmitHandler}
                />
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        padding: 26,
        backgroundColor: "#fff",
        justifyContent: "flex-start"
    }
});

输出:

React Native Positioning Element with Flex

例2.

在此示例中,我们将Button置于TextInput元素的右侧。在具有flex:1和flexDirtection:"row"的父视图内添加一个子View组件。设置flex:1(用于内部View)从上到下以及从左到右占据整个空间。 flexDirtection:"row"在内部View组件内部按行设置元素。

import React, { Component } from "react";
import { StyleSheet, View, TextInput, Button } from "react-native";

export default class App extends Component {
    state = {
        placeName: "",
        places: []
    };

    placeNameChangedHandler = val => {
        this.setState({
            placeName: val
        });
    };

    placeSubmitHandler = () => {
        alert("button clicked")
    };

    render() {
        return (
            <View style={styles.container}>
                <View style={styles.innerContainer}>
                    <TextInput
                            placeholder="An awesome place"
                            onChangeText={this.placeNameChangedHandler}
                    />
                    <Button
                            title="Button"
                            onPress={this.placeSubmitHandler}
                    />
                </View>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        padding: 26,
        backgroundColor: "#fff",
        justifyContent: "flex-start"
    },
    innerContainer:{
        flex: 1,
        flexDirection: "row"
    }
});

输出:

React Native Positioning Element with Flex

例3

在此示例中,我们删除了内部View的flex属性,并添加了宽度:100%。移除flex表单内部View会设置元素的默认尺寸。内部视图的设置宽度:"100%"占据元素的全宽和默认高度。

import React, { Component } from "react";
import { StyleSheet, View, TextInput, Button } from "react-native";

export default class App extends Component {
    state = {
        placeName: "",
        places: []
    };

    placeNameChangedHandler = val => {
        this.setState({
            placeName: val
        });
    };

    placeSubmitHandler = () => {
        alert("button clicked")
    };

    render() {
        return (
            <View style={styles.container}>
                <View style={styles.innerContainer}>
                    <TextInput
                            placeholder="An awesome place"
                            onChangeText={this.placeNameChangedHandler}
                            style={styles.textStyle}
                    />
                    <Button
                            title="Button"
                            onPress={this.placeSubmitHandler}
                    />
                </View>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        padding: 26,
        backgroundColor: "#fff",
        justifyContent: "flex-start"
    },
    innerContainer:{
      //flex: 1,
        width: "100%",
        flexDirection: "row",
        justifyContent: "space-between",
        alignItems: "center"
    },
    textStyle:{
        width: "70%",
        backgroundColor: "gray",
    },
    buttonStyle:{
        width: "30%",
    }
});

输出:

React Native Positioning Element with Flex

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

软件测试52讲 -〔茹炳晟〕

Selenium自动化测试实战 -〔郭宏志〕

Flink核心技术与实战 -〔张利兵〕

恋爱必修课 -〔李一帆〕

郭东白的架构课 -〔郭东白〕

深入C语言和程序运行原理 -〔于航〕

快手 · 移动端音视频开发实战 -〔展晓凯〕

现代C++20实战高手课 -〔卢誉声〕

云原生基础架构实战课 -〔潘野〕

好记忆不如烂笔头。留下您的足迹吧 :)