android - React Native - 在一个屏幕上显示两个应用程序栏

标签 android react-native react-navigation

我的问题是我试图在我的应用程序中实现两种类型的 Nagivation 类型,TabNavigation 和 StackNavigation,所以我使用根 StackNavigator,它有一条通往 myTabNavigator 的路线,一条通往我的另一个 StackNavigator(App.js 的代码 fragment ) .但是,当我导航到 View Screen which is SecondActivity.js 时,会弹出两个标题。我尝试在 SecondActivity.js 上使用 header:null 但它会导致两个 header 都消失。

有没有办法从 SecondActivity.js 屏幕中仅删除 1 个 header ?

App.js(使用 RootNavigator 在此 App 中组合 Tab 和 Stack 导航)

const App = TabNavigator({
 HomeScreen: { screen: HomeScreen },
 ProfileScreen: { screen: ProfileScreen },
}, {
     tabBarOptions: {
       activeTintColor: '#7567B1',
       labelStyle: {
       fontSize: 16,
       fontWeight: '600'
       }
     }
   });

const Go = StackNavigator({
 First: { screen: ProfileScreen },
 Second: { screen: SecondActivity }
});

const rootNav = StackNavigator({
 app: {screen: App},
 go: {screen: Go},
});

export default rootNav;

ProfileScreen.js

 static navigationOptions = {
   tabBarLabel: 'View/Edit', 
   header: null
 }

 // This Line Used to Navigate to SecondActivity.js Screen
 OpenSecondActivity(id) {
    this.props.navigation.navigate('Second', { ListViewClickItemHolder: id });
 }

 // The ListView onPress will call the function above.
 <ListView
           automaticallyAdjustContentInsets={false}

              dataSource={this.state.dataSource}

              renderSeparator= {this.ListViewItemSeparator}

              renderRow={(rowData) => <Text style={styles.rowViewContainer}
              onPress={this.OpenSecondActivity.bind(this, rowData.RecipeID)}> {rowData.RecipeName} </Text>}

            />

SecondActivity.js

static navigationOptions = {
  title: 'View Details',
};

最佳答案

  • 每个 StackNavigator 都有自己的 header 。

  • 这发生在您使用嵌套的 stackNavigator,所以一个 header 是因为 Go (stackNavigator),另一个是因为 rootNav (stackNavigator)。

  • Go StackNavigation 是不必要的,而是将 rootNav 更改为:

const App = TabNavigator({
 HomeScreen: { screen: HomeScreen },
 ProfileScreen: { screen: ProfileScreen },
}, {
     tabBarOptions: {
       activeTintColor: '#7567B1',
       labelStyle: {
       fontSize: 16,
       fontWeight: '600'
       }
     }
   });


const rootNav = StackNavigator({
 app: {screen: App},
  First: { screen: ProfileScreen },
 Second: { screen: SecondActivity }

});

export default rootNav;

关于android - React Native - 在一个屏幕上显示两个应用程序栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49227122/

相关文章:

javascript - 如何在 React Native 的标题中放置搜索栏?

javascript - undefined 不是对象(评估 '_react.PropTypes.object' )

javascript - 在 React Native 中制作一个可重用的组件?

javascript - undefined 不是 React Native 对象

android - 在 ListView 中乘以 TextView

添加字体时,Prolog 中不允许使用 Android 的内容

android - 如何在 Android 中基于 uses-features "android.hardware.telephony"制作多个 APK?

java - 如何获得使用 Google 地点自动完成功能的 Intent ?

react-native - react 像跨度一样的 native 文本

react-native - 如何使 "Go back to initial StackNavigator Screen when TabNavigator' s Tab 被按下”