KivyMD使用MDToolbar后其他控件位置定位异常的解决求助
问题根因
你当前使用的垂直排列MDBoxLayout会为每个子控件自动分配独立的垂直排布空间,直接放在MDBoxLayout下的MDIconButton的pos_hint是相对于自身被分配到的小范围布局区域计算的,而非相对于Toolbar下方的整块可用区域,因此y轴定位不符合预期。
解决方案
将需要自由定位的按钮统一放到FloatLayout容器内,让FloatLayout占满Toolbar下方的所有剩余空间,此时按钮的pos_hint会相对于整块FloatLayout区域计算,定位即可正常生效。修改后代码如下:
from kivy.lang import Builder from kivymd.app import MDApp KV = """ MDBoxLayout: orientation: "vertical" MDToolbar: title: "MDToolbar" FloatLayout: MDIconButton: icon: "record-circle" md_bg_color: app.theme_cls.primary_color user_font_size: "64sp" # 可根据需求调整center_y数值,0.5为当前FloatLayout区域垂直居中 pos_hint: {"center_x": 0.6, "center_y": 0.5} MDIconButton: icon: "motion-play-outline" md_bg_color: app.theme_cls.primary_color user_font_size: "32sp" pos_hint: {"center_x": 0.6, "center_y": 0.2} MDIconButton: icon: "content-save" md_bg_color: app.theme_cls.primary_color user_font_size: "32sp" pos_hint: {"center_x": 0.45, "y": 0.2} """ class Test(MDApp): def build(self): return Builder.load_string(KV) Test().run()
内容的提问来源于stack exchange,提问作者g_man
相关产品推荐
相关产品推荐

