MDNavigationDrawer位于阻止MDToolBar菜单按钮的所有内容之上

问题描述

试图使工具栏充当抽屉的打开和关闭按钮,但是由于某种原因,在抽屉打开后,菜单按钮不再处于活动状态,并且抽屉位于其顶部(不可见)。您可以将抽屉从工具栏菜单区域中拖动,即使它们被分隔在BoxLayout中。

from kivy.app import App
from kivymd.theming import ThemeManager
from kivymd.app import MDApp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.uix.widget import Widget
from kivymd.uix.button import MDIconButton
from kivy.lang import Builder

KV = """
#:import Clock kivy.clock.Clock

Screen:
    BoxLayout:
        orientation: 'vertical'
        
        MDToolbar:
            size_hint_y: 0.1
            elevation: -10
            left_action_items: [["menu",lambda x: nav_drawer.set_state('toggle')]]
                
        NavigationLayout:        
            ScreenManager:
                id: screen_manager
                Screen:
                    name: 'menu'
                    BoxLayout:
                        orientation: 'vertical'
                        
                        Widget:
                
                Screen2:
                    name: 's2'
                    BoxLayout:
                        orientation: 'vertical'

                        Widget:
                        MDLabel:
                            text: 'Profile'
                            halign: 'center'

            MDNavigationDrawer:
                id: nav_drawer
                scrim_color: [0,0.0]
                elevation: 0

                ContentNavigationDrawer:
                    id: drawerContent
                    BoxLayout:
                        orientation: 'vertical'
                        MDLabel:
                            text: 'App'
                            font_style: 'H1'                  
                        MDRectangleFlatButton:
                            text: 'Select 1'
                            pos_hint: {'center_x':0.5,'center_y':0.1}
                            on_release: Clock.schedule_once(lambda x: app.set_screen(screen_manager,nav_drawer,"s2"),.3)
                

                        MDRectangleFlatButton:
                            text: 'Main'
                            pos_hint: {'center_x':0.5,"menu"),.3) 

"""

class ContentNavigationDrawer(BoxLayout):
    pass

class Screen2(Screen):
    pass

#sm = ScreenManager()
#sm.add_widget(Screen2(name='s2'))

class MainApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "Orange"
        sm = ScreenManager()
        sm.add_widget(Screen2(name='s2'))
        Builder.load_string(KV)
    
    def set_screen(self,manager,name_screen):
        manager.current = name_screen
        nav_drawer.set_state("toggle")

     

MainApp().run()

如何调整抽屉覆盖的面积?

谢谢!

解决方法

from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.lang import Builder

from kivymd.app import MDApp

KV = """
#:import Clock kivy.clock.Clock

Screen:

    MDToolbar:
        id: toolbar
        pos_hint: {"top": 1}
        elevation: 0
        left_action_items: [["menu",lambda x: nav_drawer.set_state('toggle')]]

    NavigationLayout:  
        x: toolbar.height 
   
        ScreenManager:
            id: screen_manager

            Screen:
                name: 'menu'

                BoxLayout:
                    orientation: 'vertical'

                    Widget:

            Screen2:
                name: 's2'
                
                BoxLayout:
                    orientation: 'vertical'

                    Widget:
                    
                    MDLabel:
                        text: 'Profile'
                        halign: 'center'

        MDNavigationDrawer:
            id: nav_drawer
            scrim_color: [0,0.0]
            elevation: 0

            ContentNavigationDrawer:
                id: drawerContent
                
                BoxLayout:
                    orientation: 'vertical'
                    
                    MDLabel:
                        text: 'App'
                        font_style: 'H1'    
                                      
                    MDRectangleFlatButton:
                        text: 'Select 1'
                        pos_hint: {'center_x':0.5,'center_y':0.1}
                        on_release: Clock.schedule_once(lambda x: app.set_screen(screen_manager,nav_drawer,"s2"),.3)

                    MDRectangleFlatButton:
                        text: 'Main'
                        pos_hint: {'center_x':0.5,"menu"),.3) 

"""


class ContentNavigationDrawer(BoxLayout):
    pass


class Screen2(Screen):
    pass


class MainApp(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "Orange"
        sm = ScreenManager()
        sm.add_widget(Screen2(name='s2'))
        return Builder.load_string(KV)

    def set_screen(self,manager,name_screen):
        manager.current = name_screen
        nav_drawer.set_state("toggle")


MainApp().run()

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...