You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:52:10