跳转到内容

Button

Button 是 Miuix 中的基础交互组件,用于触发操作或事件。提供了多种风格选择,包括主要按钮、次要按钮和文本按钮。

引入

kotlin
import top.yukonga.miuix.kmp.basic.Button

基本用法

Button 组件可以用于触发操作或事件:

kotlin
Button(
    onClick = { /* 处理点击事件 */ }
) {
    Text("按钮")
}

按钮类型

Miuix 提供了多种类型的按钮,适用于不同的场景和重要程度:

主要按钮(Primary Button)

kotlin
Button(
    onClick = { /* 处理点击事件 */ },
    colors = ButtonDefaults.buttonColorsPrimary()
) {
    Text("主要按钮")
}

次要按钮(Secondary Button)

kotlin
Button(
    onClick = { /* 处理点击事件 */ },
    colors = ButtonDefaults.buttonColors()
) {
    Text("次要按钮")
}

文本按钮(Text Button)

kotlin
TextButton(
    text = "文本按钮",
    onClick = { /* 处理点击事件 */ }
)

组件状态

禁用状态

kotlin
Button(
    onClick = { /* 处理点击事件 */ },
    enabled = false
) {
    Text("禁用按钮")
}

属性

Button 属性

属性名类型说明默认值是否必须
onClick() -> Unit点击按钮时触发的回调-
modifierModifier应用于按钮的修饰符Modifier
enabledBoolean按钮是否可点击true
cornerRadiusDp按钮圆角半径ButtonDefaults.CornerRadius
minWidthDp按钮最小宽度ButtonDefaults.MinWidth
minHeightDp按钮最小高度ButtonDefaults.MinHeight
colorsButtonColors按钮颜色配置ButtonDefaults.buttonColors()
insideMarginPaddingValues按钮内部边距ButtonDefaults.InsideMargin
content@Composable RowScope.() -> Unit按钮内容区域的可组合函数-

TextButton 属性

属性名类型说明默认值是否必须
textString按钮显示的文本-
onClick() -> Unit点击按钮时触发的回调-
modifierModifier应用于按钮的修饰符Modifier
enabledBoolean按钮是否可点击true
colorsTextButtonColors文本按钮颜色配置ButtonDefaults.textButtonColors()
cornerRadiusDp按钮圆角半径ButtonDefaults.CornerRadius
minWidthDp按钮最小宽度ButtonDefaults.MinWidth
minHeightDp按钮最小高度ButtonDefaults.MinHeight
insideMarginPaddingValues按钮内部边距ButtonDefaults.InsideMargin

ButtonDefaults 对象

ButtonDefaults 对象提供了按钮组件的默认值和颜色配置。

常量

常量名类型说明默认值
MinWidthDp按钮的最小宽度58.dp
MinHeightDp按钮的最小高度40.dp
CornerRadiusDp按钮的圆角半径16.dp
InsideMarginPaddingValues按钮的内部边距PaddingValues(16.dp)

方法

方法名类型说明
buttonColors()ButtonColors创建次要按钮的颜色配置
buttonColorsPrimary()ButtonColors创建主要按钮的颜色配置
textButtonColors()TextButtonColors创建次要文本按钮的颜色配置
textButtonColorsPrimary()TextButtonColors创建主要文本按钮的颜色配置

进阶用法

带图标按钮

kotlin
Button(
    onClick = { /* 处理点击事件 */ }
) {
    Icon(
        imageVector = MiuixIcons.Useful.Like,
        contentDescription = "图标"
    )
    Spacer(modifier = Modifier.width(8.dp))
    Text("带图标按钮")
    }

自定义样式按钮

kotlin
Button(
    onClick = { /* 处理点击事件 */ },
    colors = ButtonDefaults.buttonColors(
        color = Color.Red.copy(alpha = 0.7f)
    ),
    cornerRadius = 8.dp
) {
    Text("自定义按钮")
}

加载状态按钮

kotlin
var isLoading by remember { mutableStateOf(false) }
val scope = rememberCoroutineScope()

Button(
    onClick = {
        isLoading = true
        // 模拟操作
        scope.launch {
            delay(2000)
            isLoading = false
        }
    },
    enabled = !isLoading
) {
     AnimatedVisibility(
        visible = isLoading
    ) {
        CircularProgressIndicator(
            modifier = Modifier.padding(end = 8.dp),
            size = 20.dp,
            strokeWidth = 4.dp
        )
    }
    Text("提交")
}

基于 Apache-2.0 许可发布