如何使用KivyMD制作裁剪的导航抽屉(因此它不覆盖MDToolbar)?

时间:2020-08-31 18:27:27

标签: python kivy material-design kivy-language kivymd

如何实现KivyMD导航抽屉,使其“被剪裁”并且不覆盖顶部工具栏(汉堡菜单图标按钮所在的位置)?

NavigationDrawer component的KivyMD文档实现了抽屉,以便它从屏幕的顶部一直延伸到屏幕的底部。不幸的是,因为它覆盖了用于关闭它的汉堡菜单,我想将其隐藏起来,以便用户可以使用此按钮在两个方向上切换抽屉。

以下是实现导航抽屉(如上所述)时默认情况下在KivyMD中发生的情况的示例示例:

enter image description here

与此同时,Google Material Design (MD) specification(紧随其后的是KivyMD)指出,导航抽屉组件可以被“修剪”-抽屉从工具栏的底部一直延伸到应用程序的最底部。

这是从上面的Google MD规范文档链接中获取的图片,显示了“裁剪”抽屉的外观

Image of an app with a clipped Navigation Drawer (source: Google Material Design spec)

如何在KivyMD中实现“剪切”的public function findByProducts($value) { return $this->createQueryBuilder('s') ->andWhere('s.products = :val') ->setParameter('val', $value) ->orderBy('s.id', 'ASC') ->getQuery() ->getResult() ; } ,使其不覆盖MDNavigationDrawer

1 个答案:

答案 0 :(得分:0)

以下黑客在导航抽屉中重新绘制了一个MDToolbar,这是我一直使用的,直到有人提供更好的解决方案为止。

我刚刚在MDToolbar文件中添加了一个main.kv,看起来像这样

                MDNavigationDrawer:
                        id: nav_drawer

                        BoxLayout:
                                orientation: 'vertical'

                                MDToolbar:
                                        title: 'BusKill'
                                        left_action_items: [[ 'menu', lambda x: nav_drawer.set_state('toggle') ]]

                                MDList:

                                        OneLineIconListItem:
                                                text: 'Update'

                                                IconLeftWidget:
                                                        icon: 'update'

产生了以下内容:

KivyMD double MDToolbar so Navigation Drawer doesn't hide the menu button (clipped toolbar)