样式宽度在本机基础上反应原生似乎没有工作

问题描述 投票:0回答:1

我目前在React-Native中有一个组件,我正在使用NativeBase预设组件。

import React, { Component } from 'react';
import { FlatList, ActivityIndicator, StyleSheet } from 'react-native';
import { Container, Header, Content, ListItem, Text, Input, Item, Button, Left, Right } from 'native-base';

export default class OrderDetail extends Component {
  constructor(props){
    super(props);
    this.state= { isLoading: true }
  }

  componentDidMount() {
    return fetch('https://facebook.github.io/react-native/movies.json')
    .then((response) => response.json())
    .then((responseJson) => {
      this.setState({
        isLoading: false,
        dataSource: responseJson.movies,
      }, function() {

      });
    })
    .catch((error) => {
      console.error(error);
    });
  }

  render() {
    return (
      <Container>
        <Header />
        <Content>
        <ListItem itemDivider>
          <Text>Inspection Details</Text>
        </ListItem>
          <FlatList
          data={this.state.dataSource}
          renderItem={({item}) =>
          <ListItem>
            <Left>
              <Text>Address</Text>
            </Left>
            <Right>
              <Text  style={styles.textContent}>{item.title}</Text>
            </Right>
          </ListItem>}
          keyExtractor={({id}, index) => id}
          />
          <ListItem itemDivider>
            <Text>Agent Details</Text>
          </ListItem>
          <ListItem itemDivider>
            <Text>Payment Details</Text>
          </ListItem>
          <Item regular>
            <Input placeholder='Regular Textbox' />
          </Item>
          <Button block success>
            <Text>Start Report</Text>
          </Button>
        </Content>
      </Container>
    );
  }
}

const styles = StyleSheet.create({
  areaBox: {
    width: '30%',
  },
  textContent: {
    fontSize: 20,
    color: 'red',
  },
});

我试图让每个ListItem有一个左右区域。因此,在左侧,它将是字段的名称,在右侧,它将是实际数据。上面的当前例子重复了现在不重要的“地址”。在我添加的样式:areaBox width: 30%,因为我希望左边不占据大部分区域。

我试过这样做:<Left style={styles.areaBox}>我希望Left只占整个宽度的30%。然而事实并非如此。这是我的结果:

enter image description here

正如你所看到的,地址仍然占据了大部分空间。我究竟做错了什么?

react-native native-base
1个回答
2
投票

尝试flex而不是width,React-native不适用于百分比,

flex:0.1 = 10%

flex:0.2 = 20%等等。

<Left style={{flex:0.3}}>
     <Text>Address</Text>
 </Left>
 <Right style={{flex:0.7}}>
      <Text  style={styles.textContent}>{item.title}</Text>
 </Right>

我将1 flex分为0.3和0.7,这意味着30%和70%

值之和总是应该等于1,例如(0.3 + 0.7 = 1)

© www.soinside.com 2019 - 2024. All rights reserved.