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

如何在Flet中实现嵌套容器的水平扩展并适配Android?

解决Flet中Row内Column容器填满水平空间的问题

不用手动获取页面宽度,直接用Flet自带的布局属性就能搞定,完全适配Android平台,具体做法如下:

  1. 给外层Row设置expand=True,让Row占满页面的水平宽度
  2. 给Row内的Column设置expand=True,让Column占据Row里所有可用的水平空间(如果Row还有其他固定宽度的控件,Column会自动占剩下的部分)
  3. 给Column里的Container设置expand=True,容器就会填满Column的整个水平空间

示例代码:

import flet as ft

def main(page: ft.Page):
    # 外层Row占满页面宽度
    main_row = ft.Row(
        controls=[
            # Column占满Row剩余水平空间
            ft.Column(
                controls=[
                    # 容器填满Column的水平空间
                    ft.Container(
                        content=ft.Text("已填满水平空间"),
                        bgcolor=ft.colors.LIGHT_BLUE_200,
                        expand=True,
                        padding=15
                    ),
                    # 多个容器的话,每个都设expand=True即可
                    ft.Container(
                        content=ft.Text("第二个填满的容器"),
                        bgcolor=ft.colors.LIGHT_GREEN_200,
                        expand=True,
                        padding=15,
                        margin=ft.Margin(top=5, bottom=0, left=0, right=0)
                    )
                ],
                expand=True,
                spacing=0
            ),
            # 对比用的固定宽度控件
            ft.Container(
                content=ft.Text("固定宽度"),
                bgcolor=ft.colors.ORANGE_200,
                width=120,
                padding=15
            )
        ],
        expand=True,
        spacing=10,
        alignment=ft.MainAxisAlignment.START
    )
    page.add(main_row)

if __name__ == "__main__":
    ft.app(target=main)

如果需要容器的宽度严格匹配Column的宽度,也可以给容器设置width=ft.expand,效果和expand=True一致。这种自适应布局会自动适配Android设备的各种屏幕尺寸,不用操心手动计算宽度的问题。

内容的提问来源于stack exchange,提问作者Anaconda775

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:12:38