如何在 Kivy 的滚动视图中将标签定位在屏幕中央?

How do you position a label in the center of screen in a scrollview within Kivy?

我在滚动视图中定位带有使用 canvas 添加的图像的标签时遇到困难。理想的输出是有一个带有文本内容的标签作为段落,然后是带有图像的标签,然后是另一个带有文本内容作为段落的标签。

图像显示在正确的垂直位置,如在两个文本标签之间,但当我尝试通过将 self.parent.width 乘以 .9 或其他任何方式缩小图像时,它不是定位中心小数点。它将它绑定到左侧屏幕并且标签中的填充不起作用,而它在带有文本内容的标签中起作用。我搜索了文档和其他示例,但找不到解决方案。如果有人对此有经验或可以提供任何指导,我将不胜感激。请在下面查看我的代码:

BoxLayout:
    size_hint_y: .7
    orientation: 'vertical'
    canvas.before:
       Color:
           rgba: rgba('#FFFFFF')
       Rectangle:
           pos: self.pos
           size: self.size

    ScrollView:
        id: sv
        size_hint_y: None
        height: self.parent.height
        effect_cls: 'ScrollEffect'
        GridLayout:
            id: Content
            cols: 1
            size: self.minimum_size
            size_hint: (1, None)
            height: labelscroll1.texture_size[1]
            Label:
                id: labelscroll1
                padding: ['20dp', '0dp']
                color: rgba('#000000')
                font_size: mtx.sp(14)
                text_size: self.width, None
                size: self.parent.width, self.texture_size[1]
                size_hint: (None,None)
                text: "Some text"

            Label:
                id: labelscroll2
                padding: ['5dp','0dp']
                size_hint: (None, None)
                width:  max(self.texture_size[0], self.parent.width)
                height: 300
                halign: 'center'
                markup: True
                canvas.before:
                    Rectangle:
                        pos: self.pos
                        size: self.size                                 
                        source: 'Table.png'

            Label:
                id: labelscroll3
                padding: ['20dp', '0dp']
                color: rgba('#000000')
                font_size: mtx.sp(14)
                text_size: self.width, None
                size: self.parent.width, self.texture_size[1]
                size_hint: (None,None)
                text: "Some text"

实际代码中的缩进是四个空格,但由于粘贴,此处的格式可能略有偏差。

没有看到你的实际代码,我只能猜测到底是什么问题。但是,将某些内容置于 GridLayout 单元格中心的一个好方法是使用 AnchorLayout。尝试将 kv 中的中间 Label 替换为:

        AnchorLayout:
            size_hint: (1.0, None)
            height: 300
            Label:
                id: labelscroll2
                padding: ['5dp','0dp']
                size_hint: (None, None)
                width:  max(self.texture_size[0], self.parent.width)
                height: 300
                halign: 'center'
                markup: True
                canvas.before:
                    Rectangle:
                        pos: self.pos
                        size: self.size                                 
                        source: 'Table.png'