android - Jetpack Compose:如何禁用 FloatingAction 按钮?
问题描述
根据文档null
,我们可以通过设置来禁用 FAB onClick
:
onClick - 将在用户单击此 FAB 时调用。FAB 为空时将被禁用。
当我尝试它时,我偶然发现该onClick
参数不可为空,
那么,如何禁用FAB?
解决方案
目前 ( 1.0.x
)FloatingActionButton
不支持该enabled
属性。
作为解决方法,您可以使用 aButton
和CircleShape
.
var enabled by remember { mutableStateOf(false) }
Button(
onClick = { /* do something */},
modifier = Modifier.defaultMinSize(minWidth = 56.dp, minHeight = 56.dp),
enabled = enabled,
shape = CircleShape
){
Icon(Icons.Filled.Favorite, contentDescription = "Localized description")
}
如果您想使用 aFloatingActionButton
您可以执行以下操作:
var enabled by remember { mutableStateOf(false) }
CompositionLocalProvider(LocalRippleTheme provides
if (enabled) LocalRippleTheme.current else NoRippleTheme) {
FloatingActionButton(
backgroundColor = if (enabled) MaterialTheme.colors.secondary else Gray,
onClick = { if (enabled) { /* do something */ } else {} },
) {
Icon(Icons.Filled.Favorite,
contentDescription = "Localized description",
tint = if (enabled)
LocalContentColor.current.copy(alpha = LocalContentAlpha.current)
else DarkGray)
}
}
和:
private object NoRippleTheme : RippleTheme {
@Composable
override fun defaultColor() = Color.Unspecified
@Composable
override fun rippleAlpha(): RippleAlpha = RippleAlpha(0.0f, 0.0f, 0.0f, 0.0f)
}
推荐阅读
- go - 进行单元测试 - 调用数据库事务开始,不是预期的错误
- css - 有没有办法在垂直列表中制作水平列表,但也在水平列表 CSS 中制作垂直列表?
- symfony - 您好,如何强制在路由中的 te URL 中显示默认参数
- python - 获取用于 sybase DB 连接的 Python 模块
- windows-10 - 无论 PC 语言设置如何,如何确定 Windows 10 是否为家庭版
- php - Laravel 调度器内核
- sql - 使用工作表中的输入值多次运行 SQL 并相应地生成图表
- c# - 我如何 app.Invoke 具有多个参数的后门方法?在运行时我得到 System.Exception:“没有找到这样的方法”
- vba - 将新记录插入表单上的子表中,其值等于父表单
- javascript - 当输入为空时,ngbtypeahead 函数返回 TypeError