【问题标题】:Understanding KivyMD Screen Layouts了解 KivyMD 屏幕布局
【发布时间】: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 文件还是只创建一个?
  • 对于aLayout 类监视其子级的大小,并在大小发生变化时重新计算布局和重绘。所以,我相信如果你的图像大小没有改变,那么只有那个图像会被更新。对于b:kivy Builder 维护一组基于加载的kv 文件的规则,因此这些规则是否来自单独的文件并不重要。我建议您根据可维护性、可读性和逻辑分区等因素来构建您的 kv 文件。
  • 再次感谢。你能发布一个答案让我接受吗?

标签: kivy kivy-language kivymd


【解决方案1】:

Layout 类监视其子级的大小,并重新计算布局并在该大小发生变化时重绘。所以,我相信如果你的图片大小没有改变,那么只有那个图片会被更新。

kivy Builder 会根据加载的 kv 文件维护一组规则,因此这些规则是否来自单独的文件并不重要。我建议您根据可维护性、可读性和逻辑分区等因素来构建您的 kv 文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多