在.kv文件中设置Kivy Label的halign和valign无效,如何对齐内部文本?
问题原因
Kivy 中 Label 的 halign 和 valign 属性仅控制文本在文本排版区域内的对齐位置,默认情况下文本排版区域的大小会自动适配文本内容的尺寸,和 Label 控件自身的大小无关,所以即使设置了对齐属性也不会呈现出预期效果。
解决方法
给所有需要左上角对齐的 Label 新增 text_size: self.size 属性,将文本排版区域的大小和 Label 控件自身的大小绑定,此时你设置的 halign: "left"、valign: "top" 就会生效。
以你代码里的红色背景 BackgroundLabel 为例,修改后的配置如下:
BackgroundLabel: background_color: 1,0,0,1 text: "Placeholder Text\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST\nTEST" halign: "left" valign: "top" font_size: "10sp" size_hint: .5, 1 text_size: self.size # 新增此行即可生效
其余需要左上角对齐的普通 Label 都按照同样的方式添加 text_size: self.size 属性即可。
注意:ScrollView 内部的 Label 你已经设置了
size: self.texture_size,控件大小和文本内容大小完全一致,不需要添加该属性。
如果需要文本和 Label 边缘保留一定的内边距,可以额外添加 padding 属性,例如 padding: [8, 8] 分别设置左右、上下的内边距数值。
内容的提问来源于stack exchange,提问作者Alexander Müller
相关产品推荐
相关产品推荐

