如何实现' FrameLayout' React Native中的组件?

时间:2016-05-24 07:25:23

标签: android layout react-native

我知道有一个' View' React Native中的组件,就像Android VieGroup一样,它更像是LinearLayout - 孩子们按行或列排列。

我想知道如何实现' FrameLayout'行为 - 儿童被堆积在布局中,每个孩子都可以被分配一个独特的重力位置。

例如: 将5个子项放入一个组件中,4个子项中的每一个都与布局的每个角对齐,最后一个子项与布局的中心对齐。

如何编写React Native'渲染'功能

2 个答案:

答案 0 :(得分:7)

可以使用position:' absolute'并将其对齐顶部,左侧,右侧,底部属性。这是一个工作样本

'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);

同样在rnplay上,https://rnplay.org/apps/n6JJHg

答案 1 :(得分:0)

您可以通过这种方式进行叠加     从“反应”中导入React,{组件};     从“ react-native”导入{Animated,View,StyleSheet,Easing,Text};

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;