如何在.kv文件中为MDList列表项添加两个左侧图标?
解决KivyMD中OneLineAvatarIconListItem添加两个左侧图标错位的问题
你遇到的错位问题是因为原代码里的on_size逻辑是针对右侧容器设计的,直接照搬会导致左侧容器位置计算错误。只需要移除错误的位置绑定,同时确保自定义容器的布局正确即可。
修正后的完整代码
from kivy.lang import Builder from kivymd.app import MDApp from kivymd.uix.boxlayout import MDBoxLayout from kivymd.uix.list import ILeftBodyTouch KV = ''' OneLineAvatarIconListItem: text: "One-line item with avatar" YourContainer: MDIconButton: icon: "minus" MDIconButton: icon: "plus" IconRightWidget: icon: "cog" ''' class YourContainer(ILeftBodyTouch, MDBoxLayout): adaptive_width = True orientation = 'horizontal' # 明确指定横向布局,默认也是横向,可省略 class Example(MDApp): def build(self): self.theme_cls.theme_style = "Dark" return Builder.load_string(KV) Example().run()
关键调整说明
- 移除了原代码中
on_size下对_left_container的width和x坐标修改,这部分逻辑是适配右侧容器的,放到左侧会导致图标被推到错误位置。 YourContainer继承ILeftBodyTouch后,KivyMD会自动将其放置在列表项的左侧区域,无需手动调整位置参数。- 保持容器为横向布局,让两个图标并排显示在左侧。
内容的提问来源于stack exchange,提问作者Abel Gutiérrez
相关产品推荐
相关产品推荐

