跳转到内容

FloatingToolbar

FloatingToolbar 是 Miuix 中的悬浮工具栏组件,它将其内容渲染在一个具有圆角背景的容器中,可以水平或垂直排列。实际的屏幕放置由父组件(通常是 Scaffold)处理。

此组件通常与 Scaffold 结合使用,放置在页面的特定位置,提供快捷操作或信息展示。

引入

kotlin
import top.yukonga.miuix.kmp.basic.FloatingToolbar
import top.yukonga.miuix.kmp.basic.FloatingToolbarDefaults
import top.yukonga.miuix.kmp.basic.ToolbarPosition // 用于 Scaffold

基本用法

kotlin
Scaffold(
    floatingToolbar = {
        FloatingToolbar {
            Row { // 或 Column
                IconButton(onClick = { /* 操作 1 */ }) {
                    Icon(MiuixIcons.Useful.Edit, contentDescription = "编辑")
                }
                IconButton(onClick = { /* 操作 2 */ }) {
                    Icon(MiuixIcons.Useful.Delete, contentDescription = "删除")
                }
            }
        }
    },
    floatingToolbarPosition = ToolbarPosition.BottomCenter // 设置位置
)

属性

FloatingToolbar 属性

属性名类型说明默认值是否必须
modifierModifier应用于工具栏的修饰符Modifier
colorColor工具栏背景颜色FloatingToolbarDefaults.DefaultColor()
cornerRadiusDp工具栏圆角半径FloatingToolbarDefaults.CornerRadius
outSidePaddingPaddingValues工具栏外部的内边距FloatingToolbarDefaults.OutSidePadding
shadowElevationDp工具栏的阴影高度4.dp
showDividerBoolean是否显示工具栏周围的分割线false
defaultWindowInsetsPaddingBoolean是否应用默认窗口嵌入边距true
content@Composable () -> Unit工具栏内容区域的可组合函数-

FloatingToolbarDefaults 对象

属性名类型说明
CornerRadiusDp默认圆角半径50.dp
DefaultColor()@Composable () -> Color默认背景颜色MiuixTheme.colorScheme.surfaceContainer
OutSidePaddingPaddingValues默认外部内边距PaddingValues(12.dp, 8.dp)

ToolbarPosition (用于 Scaffold)

请参考 Scaffold 文档中的 ToolbarPosition 选项。

进阶用法

自定义样式

kotlin
FloatingToolbar(
    color = MiuixTheme.colorScheme.primaryContainer,
    cornerRadius = 16.dp,
    outSidePadding = PaddingValues(24.dp),
    showDivider = false
) {
    Row(modifier = Modifier.padding(horizontal = 8.dp)) {
        IconButton(onClick = { /* 操作 1 */ }) {
            Icon(MiuixIcons.Useful.Edit, contentDescription = "编辑", tint = MiuixTheme.colorScheme.onPrimaryContainer)
        }
        IconButton(onClick = { /* 操作 2 */ }) {
            Icon(MiuixIcons.Useful.Delete, contentDescription = "删除", tint = MiuixTheme.colorScheme.onPrimaryContainer)
        }
    }
}

垂直排列内容

kotlin
FloatingToolbar {
    Column(modifier = Modifier.padding(vertical = 8.dp)) {
        IconButton(onClick = { /* 操作 1 */ }) {
            Icon(MiuixIcons.Useful.Edit, contentDescription = "编辑")
        }
        IconButton(onClick = { /* 操作 2 */ }) {
            Icon(MiuixIcons.Useful.Delete, contentDescription = "删除")
        }
    }
}

结合 Scaffold 改变位置

kotlin
Scaffold(
    floatingToolbar = {
        FloatingToolbar {
            // 工具栏内容
        }
    },
    floatingToolbarPosition = ToolbarPosition.CenterEnd // 放置在右侧居中
)

处理窗口边距

kotlin
FloatingToolbar(
    defaultWindowInsetsPadding = false // 自行处理窗口嵌入边距
) {
    // 工具栏内容
}

基于 Apache-2.0 许可发布