Android导航抽屉是一个面板,可以从屏幕边缘进出,并显示应用程序的主要导航选项。
对于某些 Android 用户,React Native 应用程序中的抽屉菜单会冻结
我的 React Native 应用程序中的抽屉菜单遇到问题。一些使用 Android 设备的用户报告菜单卡住并且无法导航。我已经使用 @...
当我尝试调用 _pagecontroller.jumpToPage 或 _pagecontroller.animateToPage 时,出现以下错误: 发生异常。 _AssertionError('包:flutter/src/widgets/scroll_controller....
如何在Android中制作浮动的NavigationView
我想复制Google在其应用程序中的菜单,但我不知道是否有像NavigationView和DrawerLayout这样的组件允许制作此菜单,但这不是固定的...
Flutter DrawerHeader // 如何摆脱分隔线
我第一次设计一个抽屉,DrawerHeader 显然带有一条灰线作为分隔线,我想摆脱它,但我不知道如何摆脱。 代码在这里(为了可读性而编辑),屏幕截图
我有一个抽屉式导航,我试图在底部放置一个页脚,其中包含附加信息(应用程序版本和注销链接).. 这是我的导航容器: <
如何在React-Navigation/Drawer 6中实现“返回”
我在 React-navigation/drawer 6 中实现 goBack 函数时遇到问题(“@react-navigation/drawer”:“^ 6.1.4”,准确地说)。 我在react中能够完美实现-
您可以在不使用react-native中创建自定义抽屉的情况下更改抽屉项目样式吗?
我在我的反应本机应用程序中使用抽屉导航器,我想知道您是否可以更改抽屉屏幕中存在的项目的样式而不制作自定义抽屉?比如提供定制v...
我尝试在抽屉标题中添加下拉按钮,但我遇到问题 下拉按钮 这是我的代码 导入'包:flutter/material.dart'; 导入'包:测试/屏幕/change_password_screen.dart'; 我...
我已经用片段实现了导航抽屉,它完全工作正常。现在我想在不使用自定义工具栏的情况下实现导航抽屉(使用 AppTheme== DarkActionbar)。我不是...
React Native - 将抽屉标题隐藏在底部选项卡导航器内的堆栈中
我想通过表单的所有屏幕隐藏抽屉标题,该表单实际上是一个堆栈。我正在使用 React Native CLI。 添加患者堆栈 我想通过表单的所有屏幕隐藏抽屉标题,该表单实际上是一个堆栈。我正在使用 React Native CLI。 添加患者堆栈 <Stack.Navigator screenOptions={{headerShown: false}}> <Stack.Screen name="Step1" component={Step1} options={{headerShown: false}}/> <Stack.Screen name="Step2" component={Step2} options={{headerShown: false}}/> </Stack.Navigator> <Tab.Navigator> <Tab.Screen name="Home" component={HomeScreen} /> <Tab.Screen name="AddPatient" component={AddPatientStack} /> </Tab.Navigator> <Drawer.Navigator screenOptions={{header: () => <HeaderMenu />}} drawerContent={props => <CustomDrawerContent {...props} />}> <Drawer.Screen name="BottomTabNavigator" component={BottomTabNavigator} /> </Drawer.Navigator> 我尝试了很多方法,但没有任何效果。 您可以使用 navigation.setOptions 在选项卡导航器内的屏幕上打开和关闭 headerShown。您需要在创建选项卡导航器的组件中执行此操作;否则,导航道具将引用堆栈导航器而不是选项卡导航器: import { createMaterialBottomTabNavigator } from 'react-native-paper/react-navigation'; import { getFocusedRouteNameFromRoute, useFocusEffect, } from '@react-navigation/native'; import HomeScreen from './Home'; import AddPatientStack from './AddPatient'; const Tab = createMaterialBottomTabNavigator(); export default function BottomNavigator({ navigation, route }) { useFocusEffect(() => { const routeName = getFocusedRouteNameFromRoute(route); navigation.setOptions({ headerShown: routeName == 'Home' }); }); return ( <Tab.Navigator initialRouteName={'AddPatient'}> <Tab.Screen name="AddPatient" component={AddPatientStack} /> <Tab.Screen name="Home" component={HomeScreen} /> </Tab.Navigator> ); } 演示
我想在 RN 应用程序的抽屉式导航底部添加注销按钮。 我尝试按以下方式使用 contentComponent: const DrawerWithLogoutButton = (道具) => ( 我想在 RN 应用程序的抽屉式导航底部添加注销按钮。 我正在尝试按以下方式使用contentComponent: const DrawerWithLogoutButton = (props) => ( <ScrollView> <SafeAreaView style={styles.container} forceInset={{ top: 'always', horizontal: 'never' }}> <DrawerItems {...props} /> </SafeAreaView> <Button style={styles.logoutButton} title="Logout" onPress={() => props.navigation.navigate('Login') }/> </ScrollView> ); export default Home = createDrawerNavigator({ // screens }, { // other settings contentComponent: DrawerWithLogoutButton, }); const styles = StyleSheet.create({ container: { flex: 1, flexDirection: 'column', }, logoutButton: { backgroundColor: 'red', position: 'absolute', bottom: 0 } }); 结果中,菜单底部有“注销”按钮。但我希望它位于抽屉面板的底部 我还希望“注销”按钮看起来像其他菜单项并有一个图标 有没有一种方法可以创建带有菜单项的抽屉导航器,该菜单项没有屏幕,但只是像我这样的注销之类的操作? 我能够通过将 justifyContent: 'space-between' 添加到 ScrollView 容器来对齐抽屉菜单底部的注销。你可以在图中看到结果 结果源代码如下所示: const DrawerWithLogoutButton = (props) => ( <ScrollView contentContainerStyle={{flex: 1, flexDirection: 'column', justifyContent: 'space-between' }}> <SafeAreaView forceInset={{ top: 'always', horizontal: 'never' }}> <DrawerItems {...props} /> </SafeAreaView> <TouchableOpacity> <View style={styles.item}> <View style={styles.iconContainer}> <Image source={require('./img/logout.png')} style={styles.icon}></Image> </View> <Text style={styles.label}>Logout</Text> </View> </TouchableOpacity> </ScrollView> ); const styles = StyleSheet.create({ item: { flexDirection: 'row', alignItems: 'center', }, label: { margin: 16, fontWeight: 'bold', color: 'rgba(0, 0, 0, .87)', }, iconContainer: { marginHorizontal: 16, width: 24, alignItems: 'center', }, icon: { width: 24, height: 24, } }); React Navigation 文档建议使用自定义内容抽屉功能包装抽屉导航。这就是我们所做的,为我们的抽屉提供一个注销按钮,同时也保留所有 Drawer.Screen 的位置。 在下面的代码中,我们创建一个 CustomDrawerContent,其中包含 DrawerItem 作为我们的 logout 按钮。该函数通过其属性 Drawer.Navigator 包装 drawerContent。我们最后的抽屉看起来像: 首页(抽屉.屏幕) 编辑个人资料(抽屉.屏幕) 着陆(抽屉.屏幕) 注销(抽屉项目) const Drawer = createDrawerNavigator(); function CustomDrawerContent(props) { return ( <DrawerContentScrollView {...props}> <DrawerItemList {...props} /> <DrawerItem label={() => <Text style={{ color: 'white' }}>Logout</Text>} style={{backgroundColor: 'red'}} onPress={() => alert('Logged out')} /> </DrawerContentScrollView> ); } function App(props) { return ( <Provider store={store}> <View style={styles.container}> <StatusBar translucent={true} /> <NavigationContainer> <Drawer.Navigator drawerContent={props => <CustomDrawerContent {...props} />}> <Drawer.Screen name='Home' component={Home} /> <Drawer.Screen name='Edit Profile' component={EditProfile} /> <Drawer.Screen name='Landing' component={Landing} /> </Drawer.Navigator> </NavigationContainer> </View> </Provider> ) } 与 William Griffins 的答案类似,只是他们的答案最终没有出现在抽屉底部的注销按钮。为了使注销位于底部,我将 DrawerContentScrollView 放入 SafeAreaView 中,然后在 DrawerContentScrollView 下方放置一个包含 DrawerItem(即注销按钮)的常规视图。 function CustomDrawerContent(props) { return ( <SafeAreaView style={{flex: 1}} forceInset={{top: "always", horizontal: "never"}}> <DrawerContentScrollView {...props}> <DrawerItemList {...props} /> </DrawerContentScrollView> <View> <DrawerItem label={"Logout"} style={styles.logoutDrawerItem} onPress={() => console.log('Logout pressed!')} /> </View> </SafeAreaView> ); } function App(props) { return ( <Provider store={store}> <View style={styles.container}> <StatusBar translucent={true} /> <NavigationContainer> <Drawer.Navigator drawerContent={props => <CustomDrawerContent {...props} />}> <Drawer.Screen name='Home' component={Home} /> <Drawer.Screen name='Edit Profile' component={EditProfile} /> <Drawer.Screen name='Landing' component={Landing} /> </Drawer.Navigator> </NavigationContainer> </View> </Provider> ) } const styles = StyleSheet.create({ logoutDrawerItem: { borderRadius: 5, }, }); 您放置在 DrawerContentScrollView 下方的任何项目都将放置在抽屉的底部。 请注意,我在注销 DrawerItem 上将 borderRadius 设置为 5,以便它与常规抽屉项目的边框半径紧密匹配。 您可以像下面的代码一样设置position:'absolute'和buttom:0: <TouchableOpacity onPress={() => {this.logout()}} style={{ bottom: 0, position: 'absolute', width: '100%' }}> <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center', flexDirection:'row', alignItems: 'center' }}> <Icon name="md-log-out" style={{marginRight: 10, color: '#444'}} size={20}/> <Text style={{color: '#444'}}>Logout</Text> </View> </TouchableOpacity> 您可以更改样式,使其像其他按钮一样。我希望这能帮助你... 接受的答案并没有直接适合我。我必须做一些修改,但总的来说,秘密确实是使用justifyContent: 'space-between'。 import {View} from 'react-native'; import { createDrawerNavigator, DrawerContentScrollView, DrawerItem, DrawerItemList, DrawerContentComponentProps, } from '@react-navigation/drawer'; const Drawer = createDrawerNavigator(); function CustomDrawerContent(props: DrawerContentComponentProps) { return ( <DrawerContentScrollView {...props} contentContainerStyle={{flex: 1, justifyContent: 'space-between'}}> <View style={{justifyContent: 'flex-start'}}> <DrawerItemList {...props} /> </View> <DrawerItem label="Logout" onPress={() => console.log('Logged out')} /> </DrawerContentScrollView> ); } . . . <Drawer.Navigator initialRouteName="HomeScreen" drawerContent={(props) => <CustomDrawerContent {...props} />} drawerContentOptions={{ activeTintColor: color.primaryDark, itemStyle: { backgroundColor: 'transperant', borderColor: color.primaryDark, borderBottomWidth: 1, opacity: 0.8, }, }} drawerStyle={styles.drawer}> <Drawer.Screen name="Home" component={HomeScreen} /> <Drawer.Screen name="Notifications" component={NotificationsScreen} /> </Drawer.Navigator> 版本:6.x 解决方案: 将 flex: 1 添加到抽屉内容容器样式,然后将 marginTop: "auto" 添加到最后一项。不需要抽屉内容。 <Drawer screenOptions={{ drawerContentContainerStyle: { flex: 1, }, }} > <Drawer.Screen name="index" options={{ drawerLabel: "Home", }} /> <Drawer.Screen name="logout" options={{ drawerLabel: "Logout", drawerItemStyle: { marginTop: "auto", }, }} /> </Drawer>;
所以我是原生反应新手,并且一直在尝试实现抽屉导航器。 我面临的问题是,当我单击右侧的图标时,我希望打开右侧抽屉,但它......
我在工具栏上添加了google的材质菜单图标作为通知图标,它显得太大了。我该如何调整它的大小,或者我做错了? 爪哇: @覆盖 protected void onCreate(捆绑
我想实现一个导航抽屉布局,我想使用一个打开或关闭导航抽屉的切换栏。 你能把主要活动java和xml文件的代码发给我吗?
当用户处于登录片段(或注册片段)时,如何禁用导航抽屉以及汉堡包按钮和工具栏?用户登录应用程序后,我想启用导航
所以我正在学习如何将导航抽屉合并到我的 Android 应用程序中。我已成功地将其合并到我的应用程序中。但是,当我
我有 header 、 sidenav 和主要组件。单击标题中的图标,应打开侧导航。页面变黑了,但是左边的侧边导航没有出现。而且我想推送主要内容...
我正在尝试使用操作栏设置 Android 导航抽屉。我在设置导航抽屉的图标和生成所有列表项时遇到困难。下面是我的代码,我现在...
在 RTL 语言 (Android) 中,弹出式抽屉菜单大小不正确
在Xamarin.Forms 5.0.0.2662版本应用程序中,使用FlyoutPage,抽屉式菜单按预期从右侧弹出,但显示不完整,甚至在某些情况下有间隙。如下图...
我已经实现了最新的appcompat库并使用工具栏作为操作栏。但问题是我无法捕获主页按钮/汉堡包图标单击事件。我已经尝试并查看了所有内容,但是