Меню StackNavigator не выравнивается по левому краю - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь реализовать навигатор стека реагирования в моем приложении expo. Приложение работает отлично, за исключением значка меню ящика, который не отображается слева, как это должно было быть. Может кто-нибудь сказать мне, где я запутался?

Вот скриншот приложения введите описание изображения здесь

Вот мой App.js

import React from 'react';
import { StyleSheet, Text, View, SafeAreaView, ScrollView, Dimensions, Image } from 'react-native';

import {createDrawerNavigator,DrawerItems} from 'react-navigation'

import SplashScreen from './src/components/splash';
import LibraryScreen from './src/screens/LibraryScreen';
import ReminderScreen from './src/screens/ReminderScreen';
import ReportScreen from './src/screens/ReportScreen';
import SettingsScreen from './src/screens/SettingsScreen';
import TrainingScreen from './src/screens/TrainingScreen';

export default class App extends React.Component {
  render() {
    return (
      <AppDrawerNavigator/>
    );
  }
}

const CustomDrawerComponent = (props) =>(
  <SafeAreaView style={{ flex:1 }}>
    <View style={{ height:150, backgroundColor: 'white',alignItems:'center', justifyContent:'center' }}>
      <Image source={require('./assets/icon.png')} style={{ height:120, width: 120, borderRadius:60 }} />
    </View>
    <ScrollView>
      <DrawerItems {...props} />
    </ScrollView>
  </SafeAreaView>
)

const AppDrawerNavigator = createDrawerNavigator({
  Training:TrainingScreen,
  Library:LibraryScreen,
  Report:ReportScreen,
  Reminder:ReminderScreen,
  Settings:SettingsScreen
},{
  contentComponent:CustomDrawerComponent
})

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

А это и есть Training.js

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';

import {header,Left,Right,Icon, Header} from 'native-base'

class TrainingScreen extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <Header>
          <Left>
            <Icon name="menu" onPress={()=>this.props.navigation.openDrawer()}/>
          </Left>
        </Header>
        <View style={{flex:1, alignItems:'center', justifyContent:'center'}}>
          <Text>Training Screen</Text>
        </View>
      </View>
    );
  }
}
export default TrainingScreen;

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
  },
});

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Просто добавьте ниже стиль в вашем коде, он работает. Добавьте этот стиль <<strong> Left style = {{justifyContent: "flex-start", flex: 1}} > в своем коде

Training.js

  class TrainingScreen extends React.Component {
  render() {
    return (
      <View style={styles.container}>
        <Header >
          <Left style={{justifyContent:"flex-start",flex:1}}><---Update---
            <Icon
              name="menu"
              onPress={() => this.props.navigation.openDrawer()}
            />
          </Left>
        </Header>
        <View
          style={{ flex: 1, alignItems: "center", justifyContent: "center" }}
        >
          <Text>Training Screen</Text>
        </View>
      </View>
    );
  }
}
export default TrainingScreen;
1 голос
/ 08 марта 2019

Возможно, вам потребуется включить все Left, Body и Right в вашу NativeBase Header

<Header>
  <Left>
    <Icon name="menu" onPress={()=>this.props.navigation.openDrawer()}/>
  </Left>
  <Body/>
  <Right/>
</Header>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...