【发布时间】:2020-10-20 16:19:57
【问题描述】:
我想了解如何使用带有 ScrollView 和 BottomNavigation 的 GridLayout 来布局 KivyMD 屏幕。我的代码不起作用,因为 GridLayout 显示在 BottonNavigation 上,然后就看不到了。设置此布局的正确方法是什么?而且,一般来说 KivyMD 屏幕布局是否有经验法则?谢谢
<MyScreen>:
name: 'myscreen'
ScrollView:
orientation:'vertical'
MDGridLayout:
cols: 3
adaptive_height: True
padding: dp(4), dp(4)
spacing: dp(4)
etc.
BoxLayout:
orientation:'vertical'
MDBottomNavigation:
panel_color: .2, .2, .2, 1
MDBottomNavigationItem:
name: 'left'
text: 'Left'
icon: 'chevron-left'
MDLabel:
text: 'Left'
halign: 'center'
font_style: 'Icon'
MDBottomNavigationItem:
name: 'right'
text: 'Right'
icon: 'chevron-right'
MDLabel:
text: 'Right'
halign: 'center'
font_style: 'Icon'
etc.
【问题讨论】:
-
任何小部件的默认
size_hint是(1,1),因此,您需要调整MyScreen中每个小部件的size_hint/size。否则,它们只会相互重叠。 -
现在可以使用了。谢谢。几个相关的问题,但如果他们需要新的 SO 问题,请告诉我:以 GridLayout 为例,当每个单元格的项目内容(例如图像)发生变化时,是重新绘制整个屏幕还是仅重新绘制项目?湾。我的应用程序中有 3 个屏幕。最佳做法是为每个屏幕创建单独的 kv 文件还是只创建一个?
-
对于
a:Layout类监视其子级的大小,并在大小发生变化时重新计算布局和重绘。所以,我相信如果你的图像大小没有改变,那么只有那个图像会被更新。对于b:kivyBuilder维护一组基于加载的kv文件的规则,因此这些规则是否来自单独的文件并不重要。我建议您根据可维护性、可读性和逻辑分区等因素来构建您的kv文件。 -
再次感谢。你能发布一个答案让我接受吗?
标签: kivy kivy-language kivymd