How to achieve 'FrameLayout' component in React Native?

后端 未结 2 452
北恋
北恋 2021-01-18 01:58

I know there is a \'View\' component in React Native that acts like Android VieGroup, how ever it is more likely to work as LinearLayout - childrens are arranged in rows or

相关标签:
2条回答
  • 2021-01-18 02:06

    That can be done using position: 'absolute' and align it top,left,right,bottom properties. Here is an working sample

    'use strict';
    
    var React = require('react-native');
    var {
      AppRegistry,
      StyleSheet,
      Text,
      View,
    } = React;
    
    var SampleApp = React.createClass({
      render: function() {
        return (
          <View style={styles.container}>
                    <Text style={styles.topLeft}> Top-Left</Text>
                    <Text style={styles.topRight}> Top-Right</Text>
            <Text>Center</Text>
            <Text style={styles.bottomLeft}> Bottom-Left</Text>
            <Text style={styles.bottomRight}> Bottom-Right</Text>
          </View>
        );
      }
    });
    
    var styles = StyleSheet.create({
      container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
        marginTop: 24
      },
      topLeft:{
        position: 'absolute',
        left: 0,
        top: 0
      },
        topRight:{
        position: 'absolute',
        right: 0,
        top: 0
      },
        bottomLeft:{
        position: 'absolute',
        left: 0,
        bottom: 0
      },
        bottomRight:{
        position: 'absolute',
         right: 0,
        bottom: 0
      }
    });
    
    AppRegistry.registerComponent('SampleApp', () => SampleApp);
    

    Also on rnplay, https://rnplay.org/apps/n6JJHg

    0 讨论(0)
  • 2021-01-18 02:30

    You can do overlay this way import React, { Component } from "react"; import { Animated, View, StyleSheet, Easing, Text } from "react-native";

    class A extends Component {
      constructor(props) {
        super(props);
        this.animatedValue = new Animated.Value(0);
      }
    
      handleAnimation = () => {
        Animated.timing(this.animatedValue, {
          toValue: 1,
          duration: 500,
          easing: Easing.ease
        }).start();
      };
    
      render() {
        return (
          <View style={styles.container}>
    
            <View style={styles.layer1} />
            <View style={styles.overLay}>
              <Text>This is an overlay area</Text>
            </View>
          </View>
        );
      }
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 1
      },
      layer1: {
        height:100,
        backgroundColor: "lightgreen",
    
      },
      overLay: {
        height: 100,
        width: "100%",
        backgroundColor: "#00000070",
        position: "absolute",
    
      }
    });
    
    export default A;
    
    0 讨论(0)
提交回复
热议问题