我能实现这种布局吗?
布局草图:
标题部分在所有标签中共享。它是此屏幕中布局的一部分。 每个标签都包含一个scrollView。
顺便说一下,我已经尝试将tab导航器定义为一个组件,并在render方法中使用它,以及静态头组件。
render() {
return (
<StaticHeaderComponent />
<MyTabNavigator />
)
}
不起作用。标签导航器根本不呈现。
答案 0 :(得分:1)
这是一个简单的工作示例:
MyTabNavigator.js
import React, { Component } from 'react'
import { View, Text, ScrollView } from 'react-native'
import { TabNavigator } from 'react-navigation'
class FirstTab extends Component {
render() {
return (
<ScrollView>
<Text>first tab</Text>
</ScrollView>
)
}
}
class SecondTab extends Component {
render() {
return (
<ScrollView>
<Text>second tab</Text>
</ScrollView>
)
}
}
const MyNavigator = TabNavigator({
first: { screen: FirstTab },
second: { screen: SecondTab }
},
{
tabBarPosition: 'top'
})
export default MyNavigator
App.js
import React, { Component } from 'react'
import { View } from 'react-native'
import MyTabNavigator from './MyTabNavigator'
export default class App extends Component {
render() {
return (
<View style={{flex: 1}}>
<View // place your StaticHeaderComponent here
style={{height: 100, backgroundColor: 'green'}}
/>
<MyTabNavigator/>
</View>
)
}
}
答案 1 :(得分:0)
对于反应导航3. +文档的 常见错误 部分非常方便。您可以找到文档和示例here。
具体来说,您需要公开static router
并通过navigation
作为道具。您可以根据需要进一步自定义标签样式。
const TabbyNavigator = createMaterialTopTabNavigator({
Tab: TabScreen,
AnotherTab: AnotherTabScreen
});
class SomeScreen extends React.Component {
static router = TabbyNavigator.router;
render() {
return (
<TabbyNavigator navigation={this.props.navigation} />
);
}
}