我正在努力使文本在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()
请帮助!
答案 0 :(得分:0)
https://github.com/HeaTTheatR/KivyMD/blob/master/kivymd/uix/list.py
OneListItem继承自BaseListItem,后者具有受保护的属性_txt_left_pad。这是一个受保护的变量,不应混淆,因为材料设计标准不允许列表项中居中的文本。但是它的python没什么能阻止您弄乱它,并增加左侧的填充,直到其居中或向内移动为止。可能还有其他方法可以通过使OneListItem的子项混乱并改变子项的繁荣来实现。
答案 1 :(得分:0)
一种实现方法是将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()
P.S。代码中的kv
部分未在您的示例中使用...