如何在jetpack编写中自动聚焦文本字段。当我点击文本字段并开始输入时。同时当我点击后退按钮,然后当我试图点击文本字段时,什么都没有发生。
val textState = remember { mutableStateOf(TextFieldValue()) }
TextField(
modifier = Modifier.fillMaxWidth(),
value = textState.value,
onValueChange = { value : TextFieldValue ->
textState.value = value
}
)
8条答案
按热度按时间oug3syen1#
发布问题的更新答案(API在编写测试版中重命名)
1dkrff032#
您可以使用带有SideEffect的
FocusRequester
。比如:
然后使用**
focusRequester.requestFocus()
**。这样,系统将焦点授予与此FocusRequester
关联的组件。要在屏幕出现时自动聚焦字段,可以使用:
要手动将焦点授予字段:
stszievb3#
l2osamch4#
取自合成单元测试并应用于TextField Link
编辑:将框更改为行,因为框在“1.0.0-alpha 04”中已弃用
bqucvtff5#
如果你想让你的文本字段在你导航到屏幕时自动聚焦,你可以使用这个。这允许你在合成过程中不要
requestFocus
,这不是你应该做的。否则,你会得到IllegalStateException
,有时会显示消息“FocusRequester is not initialized”。这是因为
LaunchedEffect
离开合成时,LaucnhedEffeect
内部的协程将被取消。wribegjk6#
为什么选择
SideEffect
:文档的第一行。对于光标位置this answer helped。
onValueChanged
在我的工作代码中保持原样,我不需要它。xjreopfe7#
将光标移动到文本的长度,并允许用户使用以下代码将光标移动到TextField上
jk9hmnmh8#
在最新版本的Jetpack Compose(目前为1.3.3)中,如果您使用以下命令:
尝试自动对焦
TextField
,您将获得:下面是一个不使用
delay
的优雅解决方案: