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

Flet布局实现求助:双列全屏高度与行独立滚动条需求

Flet布局实现求助:双列全屏高度与行独立滚动条需求

嘿,我看了你的问题和代码,这两个小问题其实调整几个核心属性就能搞定,咱们一步步来修改:

问题拆解与解决思路

  1. 让两列都占满页面高度:Flet里要让控件填充父容器的可用空间,核心是设置expand=True,咱们需要给外层的Row和两个内层的Column都加上这个属性。
  2. 让Column2的每个Row拥有独立滚动条:原来的代码是把所有Row塞进一个带滚动的Column里,现在要给每个Row单独设置滚动属性,而不是给外层Column加滚动。

修改后的完整代码

def main2(page: ft.Page):
    # 去掉页面默认内边距,让布局真正顶满全屏
    page.padding = 0
    page.spacing = 0

    # 外层Row设置expand=True,自动占满整个页面的宽高
    searchArea = ft.Row(scroll=False, expand=True, spacing=10)

    def buildContainer(text):
        return ft.Container(
                content=ft.Text(value=text, size=16),
                alignment=ft.alignment.center,
                width=200,  # 固定宽度,方便测试横向滚动效果
                height=100,  # 给容器固定高度,让Row布局更规整
                bgcolor=ft.colors.BLUE,
                border_radius=ft.border_radius.all(5),
                margin=5
        )

    # 列1的Column设置expand=True,占满外层Row分配的高度
    searchColumn = ft.Column(
            [
                buildContainer("Column 1 item 1"),
                buildContainer("Column 1 item 2"),
            ],
            expand=True,
            alignment=ft.MainAxisAlignment.START,
            spacing=10
        )

    searchArea.controls.append(searchColumn)

    # 列2的Column同样设置expand=True,占满页面高度
    column2 = ft.Column(
            [
                # 给每个Row单独设置横向滚动属性
                ft.Row(
                    [buildContainer("Column 2 Row 1 item 1"), buildContainer("Column 2 Row 1 item 2"), buildContainer("Column 2 Row 1 item 3")],
                    scroll="horizontal",  # 此Row拥有独立滚动条
                    spacing=10,
                    height=120  # 固定Row高度,确保滚动条正常触发
                ),
                ft.Row(
                    [buildContainer("Column 2 Row 2 item 1"), buildContainer("Column 2 Row 2 item 2"), buildContainer("Column 2 Row 2 item 3"), buildContainer("Column 2 Row 2 item 4")],
                    scroll="horizontal",  # 第二个Row的独立滚动条
                    spacing=10,
                    height=120
                ),
            ],
            expand=True,
            spacing=10,
            alignment=ft.MainAxisAlignment.START
        )

    searchArea.controls.append(column2)

    page.add(searchArea)

ft.app(main2)

关键修改点说明

  • 全屏高度实现:外层Row和两个内层Column都设置了expand=True,配合page.padding=0,彻底消除默认边距,让两列自动填充整个页面高度。
  • 独立滚动条实现:把原来加在Column上的scroll属性,转移到每个Row自身,并给Row固定高度,这样当Row内的容器总宽度超过显示区域时,就会触发该Row的独立滚动条,不会和其他Row共用。
  • 额外调整:给容器增加了固定高度、边距和间距,让布局更美观,也更容易测试滚动效果。

备注:内容来源于stack exchange,提问作者Sosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:53:04