Javascript 使用createDrawerNavigator时如何使页眉滑动?
已解决 我找到了一个解决方案,如下面的答案所示Javascript 使用createDrawerNavigator时如何使页眉滑动?,javascript,react-native,navigation-drawer,Javascript,React Native,Navigation Drawer,已解决 我找到了一个解决方案,如下面的答案所示 我一直在尝试许多不同的方法来解决这个问题 为了使标题不在抽屉上方,我在DrawerNavigator中嵌套了导航器。 打开标题时(使用属性drawerType:“slide”),它会滑动嵌套导航器的所有内容,但不会滑动标题本身。标题保持其位置,抽屉内容呈现在标题下方 除了在嵌套的导航器中为每个组件分别呈现标题外,还有什么方法可以使标题滑动呢 如果有必要,我会发布我的一些代码,但是如果我必须链接所有可能相关的内容,那将是相当多的。我主要想知道我想要
我一直在尝试许多不同的方法来解决这个问题 为了使标题不在抽屉上方,我在
DrawerNavigator
中嵌套了导航器。
打开标题时(使用属性drawerType:“slide”
),它会滑动嵌套导航器的所有内容,但不会滑动标题本身。标题保持其位置,抽屉内容呈现在标题下方
除了在嵌套的导航器中为每个组件分别呈现标题外,还有什么方法可以使标题滑动呢
如果有必要,我会发布我的一些代码,但是如果我必须链接所有可能相关的内容,那将是相当多的。我主要想知道我想要的是否可能
提前谢谢
编辑:
在试图重新创建这个问题时(为了提供一个可理解的代码片段),我意识到我实际上已经将标题设置为抽屉导航器的一部分。
我这样做是为了能够使用自定义头,每次尝试在嵌套堆栈中设置头时,都会导致它被抽屉覆盖。要么不出现,要么给抽屉标题:null
,要么根本不提供任何标题,返回默认(空白)标题,而不是我的自定义标题
我将进一步尝试解决这个问题,并在一天结束之前提供一个代码片段、解决方案或失败的承认。我最终解决了我的问题。显然,我需要做的是把我的底部标签导航器放在一个stacknavigator中,然后可以放在抽屉里 我试图使代码尽可能密集,以防其他人最终遇到与我相同的问题
标题和屏幕
最好是共享您的代码,即使代码比较长。您总是可以编写一个简短的代码“模型”,其中包括基本部分,但不是您所拥有代码的完全复制/粘贴。看看你是否需要编写示例的指南。谢谢,我会的@Das_GeekI明天会带着一段代码回来。
const Header = () => <View style={{height: 50, width: '100%', backgroundColor: 'yellow'}}></View>
const Screen = ({color, navigation}) => {
return (
<View style={{flex: 1, backgroundColor: color}}>
<TouchableOpacity onPress={() => navigation.toggleDrawer()}>
<View style={{backgroundColor: 'white', width: 50, height: 50}}></View>
</TouchableOpacity>
</View>
);
}
const Bottom = createBottomTabNavigator(
{
ScreenOne: {
screen: props => <Screen color='green' {...props} />
},
ScreenTwo: {
screen: props => <Screen color='yellow' {...props} />
}
},
{
initialRouteName: 'ScreenOne',
tabBarOptions: {
activeTintColor: "blue",
inactiveTintColor: "grey",
},
navigationOptions: {
header: () => <Header />
}
});
const Main = createStackNavigator(
{
BottomTab: Bottom
});
const DrawerNavigator = createDrawerNavigator(
{
MainFlow: {
screen: Main,
navigationOptions: {
header: null
}
}
},
{
hideStatusBar: false,
drawerType: 'slide',
drawerBackgroundColor: 'rgba(255,255,255,.9)',
overlayColor: 'rgba(0,0,0,0)',
drawerLockMode: 'locked-open',
contentOptions: {
activeTintColor: '#fff',
activeBackgroundColor: '#6b52ae',
},
navigationOptions: {
header: null
}
});
export const AppContainer = createAppContainer(DrawerNavigator);