2016-06-03 4 views
0

Ich habe eine DrawerLayoutAndroid, die von ToolbarAndroid geöffnet wird. Wenn ich eine neue Szene rendere (durch Drücken einer Taste in der Schublade). Ich möchte nicht, dass die Toolbar erneut gerendert wird, weil sie mit der Animation nicht gut aussieht.Render neue Szene ohne neu zu rendern Toolbar [Navigator und Toolbar]

Ist das möglich? Und wenn es so ist?

Hier ist mein Code:

/** Navigator class 
 

 
import WelcomeView from './app/components/WelcomeView.js'; 
 
import SecondView from './app/components/SecondView.js'; 
 

 
class App extends Component { 
 
    render() { 
 
    return (
 
     <Navigator 
 
      initialRoute={{name: 'Welcome'}} 
 
      renderScene={this.renderScene} 
 
     /> 
 
    ); 
 
    } 
 
    
 
    renderScene(route, navigator) { 
 
    if(route.name == 'Welcome') { 
 
     return <WelcomeView navigator={navigator} {...route.passProps} /> 
 
    } 
 
    if(route.name == 'Second') { 
 
     return <SecondView navigator={navigator} {...route.passProps} /> 
 
    } 
 
    } 
 
}

/** DrawerLayout 
 

 
export default class Drawer extends Component { 
 
    
 
    navigate(dest) { 
 
     this.props.navigator.push({name: '{dest}'}); 
 
    } 
 
    
 
    render() { 
 
     var navigationView = (
 
      <View style={{backgroundColor: '#fff', flex: 1, alignItems: 'center', justifyContent: 'center'}}> 
 
       <TouchableHighlight onPress={this.navigate('Welcome')}> 
 
         <DrawerItem text="Home" icon="home"/> 
 
       </TouchableHighlight> 
 
       <TouchableHighlight onPress={this.navigate('Second')}> 
 
        <DrawerItem text="Second" icon="backup" /> 
 
       </TouchableHighlight> 
 
      </View> 
 
     ); 
 
     return (
 
    <DrawerLayoutAndroid 
 
     ref='DRAWER' 
 
     drawerWidth={300} 
 
     drawerPosition={DrawerLayoutAndroid.positions.Left} 
 
     renderNavigationView={() => navigationView}> 
 
     <ToolbarAndroid 
 
     title="App" 
 
     navIcon={require('../images/Recorder.png')} 
 
     style={{height: 56}} 
 
     onIconClicked={() => this.refs['DRAWER'].openDrawer()} 
 
    /> 
 
     {this.props.pageContent} 
 
    </DrawerLayoutAndroid> 
 
     ) 
 
    } 
 
}

/** Welcome View 
 

 
export default class WelcomeView extends Component { 
 
    render() { 
 
     return (
 
      <Drawer 
 
      navigator={this.props.navigator} 
 
      pageContent={ 
 
       <View> 
 
        <View style={{flex: 1, alignItems: 'center'}}> 
 
         <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>Hello</Text> 
 
         <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>World!</Text> 
 
        </View> 
 
       </View>} 
 
      /> 
 
     ) 
 
    } 
 
} 
 

 
/** Second View 
 

 
export default class WelcomeView extends Component { 
 
    render() { 
 
     return (
 
      <Drawer 
 
      navigator={this.props.navigator} 
 
      pageContent={ 
 
       <View> 
 
        <View style={{flex: 1, alignItems: 'center'}}> 
 
         <Text>Second screen!</Text> 
 
        </View> 
 
       </View>} 
 
      /> 
 
     ) 
 
    } 
 
}

+0

Können Sie etwas Code teilen? Was passiert, wenn die Toolbar erneut gerendert wird? Animiert es mit der Szene? –

+0

Ja, es animiert mit der Szene. Ich werde etwas Code bereitstellen. – Dedpul

Antwort

0

Die Wurzel Ihrer Szene ist ein Navigator und jede Szene hat zwei verschiedene Schubladen, die als separate Werkzeugleiste. Sie möchten die Szenenstruktur in etwa so ändern.