Table of Content
TabNavigatorではヘッダが表示されない
React Navigationでは、ナビゲーションの種類にStackNavigatorとTabNavigatorがあります。StackNavigatorは関連性のある画面に遷移させる時(例えば、ブログなどの一覧画面から詳細画面への遷移)に使用されますが、TabNavigationは関連性のない画面間を遷移する(例えば、ホーム画面とプロファイル画面)の移動などに使用されます。
StackNavigatorの場合、デフォルトでHeaderが表示され、そこにタイトルをつけることができます。
class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Home',
};
/* render function, etc */
}
class DetailsScreen extends React.Component {
static navigationOptions = {
title: 'Details',
};
/* render function, etc */
}
const RootStack = StackNavigator(
{
Home: {
screen: HomeScreen,
},
Details: {
screen: DetailsScreen,
},
},
{
initialRouteName: 'Home',
}
);
export default class App extends React.Component {
render() {
return <RootStack />;
}
}
しかし、TabNavigatorは下にタブ表示がされますが、上と同様にnavigationOptionsでtitleを設定してもヘッダーが表示されません。
TabNavigationにヘッダとタイトルを表示する
TabNavigationにヘッダを表示する方法に、TabNavigationにStackNavigationをNestingする方法があります。上のRootStackを下のようにTabNavigatorにStackNavigatorがNestingされるようにすれば、Header/Titleを表示させることができます。
rootStack = TabNavigator(
{
Home: {
screen: StackNavigator({
Home: { screen: HomeScreen },
})
},
Details: {
screen: StackNavigator({
Details: { screen: DetailsScreen },
})
},
})