【发布时间】:2023-02-13 20:43:41
【问题描述】:
我正在尝试使屏幕标题可编辑。
MediumTopAppBar(
title = {
val name: String? = "Some Title"
var input by remember { mutableStateOf(name ?: "") }
when (state.isEditingTitle) {
true ->
TextField(
value = input,
onValueChange = { input = it },
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(onDone = {
callbacks.onEditTitleChange(editTitle = false, updatedTitle = input)
})
)
false -> {
Text(
modifier = Modifier.clickable { callbacks.onEditTitleChange(true, null) },
text = name ?: "(No Title)"
)
}
}
},
... more app bar parameters
}
当我单击标题 Text(...) 并且视图被重新组合时,AppBar 显示两个 TextFields
如何忽略最上面的一个,只显示底部的一个,比如 Text() 只显示在底部?
(仅供参考:两个 TextInputs 有自己的记忆状态,并用各自的值调用回调)
- 奖励问题:如何处理记忆状态“输入”,以便在每次触发
onDone键盘操作时重置?而不是val name: String? = "Some Title",它当然会是val name: String? = state.stateModel.title行中的东西
【问题讨论】:
-
它没有帮助,不,我没有
.material作为依赖项,除了图标。排版中没有设置颜色。 -
您是否也在使用 M3 主题?
-
是的,创建了 AppTheme @Composable。它几乎是 Android Studio 创建的标准类。我无法访问 M2,因为我没有导入它
标签: android-jetpack-compose compose-recomposition