react-native + native-base。使MapView填充<content>区域

时间:2016-10-20 18:22:13

标签: react-native native-base

我正在使用react-native + native-base并使用简单的布局 - 标题内容页脚。我在该部分中使用MapView,我希望Map填充内容区域。如果我在MapView的样式中指定宽度和高度,则地图显示正常。如果我将MapView的样式设置为flex:1则地图不会显示

这是我的代码..我想要的只是地图填写内容..

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View, 
  MapView
} from 'react-native';
import { Container, Header, Title, Content, Footer, FooterTab, Button, Icon } from 'native-base';

class Project extends Component {
  render() {
    return (
            <Container> 
                <Header>
                    <Title>TEST</Title>
                </Header>

                <Content>
                    <MapView
                      style={styles.map}
                      showsUserLocation={true}
                    />
                </Content>

                <Footer>
                    <FooterTab>
                        <Button transparent>
                            <Icon name='ios-call' />
                        </Button>  
                    </FooterTab>
                </Footer>
            </Container>
        );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
  map:{
    flex:1
  }
});

AppRegistry.registerComponent('Project', () => Project);

4 个答案:

答案 0 :(得分:4)

尝试将<MapView>包裹在<View>而不是<Content>中:

<View style={{flex: 1}}>
<MapView
  style={styles.map}
  showsUserLocation={true}/>
</View>

答案 1 :(得分:0)

Native Base Container是一个可滚动的视图,因此您无法在此容器中填充地图。如果检查地图元素,则高度为0.

一种可能的解决方案是检测窗口尺寸,然后计算代码中的宽度和高度。但要小心窗框调整大小或旋转。

import Dimensions from 'Dimensions'; Dimensions.get('window').height; Dimensions.get('window').width;

答案 2 :(得分:0)

我有以下内容:

<Container> 
<Header> 
<Title> My Map</Title> 
</Header> 

<Map />

<Container> 

答案 3 :(得分:0)

如果要在nativebase组件中添加地图,可以使用like:

<Container> 
   <Header>
      <Title> Map </Title> 
   </Header>

  <Content contentContainerStyle={{ flex: 1 }}> 
      <MapView style={{flex: 1}} />
  </Content> 

   <Footer>
      <FooterTab>
         <Button transparent>
            <Icon name='ios-call' />
         </Button>  
       </FooterTab>
    </Footer>

</Container>