KivyMD的NavigationDrawer跨多屏显示,如何仅在HomeScreen中展示
解决方案
你只需要监听屏幕切换事件,动态控制导航抽屉的可滑动属性即可,修改后的KV代码如下:
MDScreen: MDNavigationLayout: ScreenManager: id: screen_manager on_current: # 切换屏幕时控制抽屉是否可滑动开启 nav_drawer.enable_swype_open = args[1] == 'home_screen' # 可选:直接禁用抽屉,避免任何方式误触发打开 nav_drawer.disabled = args[1] != 'home_screen' HomeScreen: id: home MDBoxLayout: orientation: 'vertical' MDToolbar: title: 'Navigation Drawer' left_action_items: [['menu', lambda x: nav_drawer.set_state('toggle')]] Widget: MenuScreen: id: menu MDNavigationDrawer: id: nav_drawer <HomeScreen>: name: 'home_screen' MDLabel: id: label text: 'Home Screen' halign: 'center' MDRaisedButton: text: 'Menu Screen' pos_hint: {'center_x':0.5, 'center_y':0.4} on_press: root.manager.current = 'menu_screen' <MenuScreen>: name: 'menu_screen' MDLabel: text: f'Menu Screen from Home Screen' halign: 'center' MDRaisedButton: text: 'Home Screen' pos_hint: {'center_x':0.5, 'center_y':0.4} on_press: root.manager.current = 'home_screen'
实现说明
MDNavigationDrawer自带enable_swype_open属性,用于控制是否支持滑动呼出抽屉,我们给ScreenManager绑定on_current事件,每次切换屏幕时判断当前屏幕是否为主屏幕,动态修改该属性值。- 可选配置
nav_drawer.disabled属性,可以彻底禁用抽屉功能,避免其他逻辑误触发抽屉弹出,适配性更强。 - 你当前的工具栏(MDToolbar)本身仅定义在HomeScreen内部,所以MenuScreen默认不会显示菜单按钮,无需额外调整。
HomeScreen(主屏幕)效果

MenuScreen(菜单屏幕)效果

内容的提问来源于stack exchange,提问作者Akshay Saambram
相关产品推荐
相关产品推荐

