【问题标题】:Centering MDlist Text under ScrollView KivyMD在 ScrollView KivyMD 下居中 MDlist 文本
【发布时间】:2020-05-19 19:01:24
【问题描述】:

我正在努力使 ScrollView 中的文本居中。

我的 KV 代码如下:

from kivy.uix.scrollview import ScrollView
from kivymd.app import MDApp
from kivymd.uix.list import MDList, OneLineListItem

kv =""""
    ScrollView:
        do_scroll_x: False  # Important for MD compliance
        MDList:
            OneLineListItem:
                text: "Single-line item"
"""

class MainApp(MDApp):
    def build(self):
        sv = ScrollView()
        ml = MDList()
        sv.add_widget(ml)
        contacts = ["Paula", "John", "Kate", "Vlad"]
        for c in contacts:
            ml.add_widget(
                OneLineListItem(
                    text=c
                )
            )
        return sv

if __name__ == '__main__':
    MainApp().run()

这是屏幕的样子:

请帮忙!

【问题讨论】:

标签: python list kivy scrollview


【解决方案1】:

一种方法是对OneLineListItem 进行子类化,因此您可以添加halign 参数以进行水平对齐:

class OneLineListItemAligned(OneLineListItem):
    def __init__(self, halign, **kwargs):
        super(OneLineListItemAligned, self).__init__(**kwargs)
        self.ids._lbl_primary.halign = halign


class MainApp(MDApp):
    def build(self):
        sv = ScrollView()
        ml = MDList()
        sv.add_widget(ml)
        contacts = ["Paula", "John", "Kate", "Vlad"]
        for c in contacts:
            ml.add_widget(OneLineListItemAligned(halign="center", text=c))
        return sv

if __name__ == '__main__':
    MainApp().run()

附:您的示例中未使用代码的kv 部分...

【讨论】:

    【解决方案2】:

    https://github.com/HeaTTheatR/KivyMD/blob/master/kivymd/uix/list.py

    OneListItem 继承自 BaseListItem,后者具有受保护的属性 _txt_left_pad。这是一个受保护的变量,不应弄乱,因为材料设计标准不允许列表项中的居中文本。但是它的蟒蛇所以没有什么能阻止你弄乱它并增加左边的填充直到它居中或移动到你喜欢的程度。可能还有其他方法可以通过弄乱 OneListItem 的孩子并改变孩子的繁荣来做到这一点。

    【讨论】:

    • 无论如何请你帮帮我
    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 2021-02-21
    • 2020-12-12
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多