跳到主要内容

ExpansionTile

一个带有展开箭头图标的单行ListTile,展开或折叠该Tile以显示或隐藏其子项。

Live example

import flet as ft


def main(page: ft.Page):
page.spacing = 0
page.padding = 0

def handle_expansion_tile_change(e):
page.open(
ft.SnackBar(
ft.Text(f"ExpansionTile was {'expanded' if e.data=='true' else 'collapsed'}"),
duration=1000,
)
)
if e.control.trailing:
e.control.trailing.name = (
ft.icons.ARROW_DROP_DOWN
if e.control.trailing.name == ft.icons.ARROW_DROP_DOWN_CIRCLE
else ft.icons.ARROW_DROP_DOWN_CIRCLE
)
page.update()

page.add(
ft.ExpansionTile(
title=ft.Text("ExpansionTile 1"),
subtitle=ft.Text("Trailing expansion arrow icon"),
affinity=ft.TileAffinity.PLATFORM,
maintain_state=True,
collapsed_text_color=ft.colors.RED,
text_color=ft.colors.RED,
controls=[ft.ListTile(title=ft.Text("This is sub-tile number 1"))],
),
ft.ExpansionTile(
title=ft.Text("ExpansionTile 2"),
subtitle=ft.Text("Custom expansion arrow icon"),
trailing=ft.Icon(ft.icons.ARROW_DROP_DOWN),
collapsed_text_color=ft.colors.GREEN,
text_color=ft.colors.GREEN,
on_change=handle_expansion_tile_change,
controls=[ft.ListTile(title=ft.Text("This is sub-tile number 2"))],
),
ft.ExpansionTile(
title=ft.Text("ExpansionTile 3"),
subtitle=ft.Text("Leading expansion arrow icon"),
affinity=ft.TileAffinity.LEADING,
initially_expanded=True,
collapsed_text_color=ft.colors.BLUE,
text_color=ft.colors.BLUE,
controls=[
ft.ListTile(title=ft.Text("This is sub-tile number 3")),
ft.ListTile(title=ft.Text("This is sub-tile number 4")),
ft.ListTile(title=ft.Text("This is sub-tile number 5")),
],
),
)


ft.app(target=main)

属性

affinity

通常用于将展开箭头图标强制放置在Tile的前缘或后缘。

属性值是TileAffinity

bgcolor

展开子列表时显示的颜色

controls

展开时显示的控件。通常为ListTile控件。

controls_padding

定义controls周围的填充。

填充值是Padding类的实例。

clip_behavior

根据此选项内容将内容剪辑(或不剪辑)。

属性值是ClipBehavior

默认为ClipBehavior.NONE

collapsed_bgcolor

子列表折叠时Tile的背景颜色

collapsed_icon_color

子列表折叠时Tile展开箭头图标的颜色

collapsed_shape

子列表折叠时Tile的边框形状。值是OutlinedBorder类的实例。

collapsed_text_color

子列表折叠时Tile标题的颜色

dense

此列表Tile是否是垂直紧凑列表的一部分。紧凑列表Tile默认高度较小。

在Material3中不推荐将此属性设置为True

默认为False

enable_feedback

检测到手势时是否提供声音和/或触觉反馈。例如,在Android上,当启用反馈时,轻按会产生点击声音,长按会产生短暂的振动。

默认为True

expanded_alignment

定义展开时子项的对齐方式,当Tile展开时子项以列的形式排列。

对齐方式是Alignment类的实例。

expanded_cross_axis_alignment

定义展开时每个子控件在controls中的对齐方式。

属性值是CrossAxisAlignment。默认为CENTER

icon_color

子列表展开时Tile展开箭头图标的颜色

initially_expanded

布尔值,定义Tile是否初始展开或折叠。默认值为False

leading

在标题之前显示的Control

maintain_state

布尔值,定义在Tile展开和折叠时是否保持controls的状态。默认值为False

min_tile_height

最小Tile高度。

shape

子列表展开时Tile的边框形状。值的类型为OutlinedBorder

show_trailing_icon

是否显示尾部图标(如果指定且可见,则为默认图标或自定义的trailing)。默认为True

subtitle

标题下方显示的附加内容。通常为Text小部件。

text_color

子列表展开时Tile标题的颜色

tile_padding

定义Tile的填充。默认值为padding.symmetric(horizontal=16.0)

填充值是Padding类的实例。

title

显示为Tile的主要内容的Control。通常为Text控件。

trailing

在标题之后显示的Control。通常为[Icon](/docs

/controls/icon)控件。

visual_density

定义控件布局的紧凑程度。值是ThemeVisualDensity

事件

on_change

当用户单击或轻触列表Tile时触发。

on_long_press

当用户长按此列表Tile时触发。