如何解决如何确定 TextField 失去焦点后焦点的位置Android Jetpack Compose
当我的 TextField
失去焦点时,我如何确定焦点去了哪里?
var input1 by remember { mutableStateOf("") }
var input2 by remember { mutableStateOf("") }
Column{
TextField(
value = input1,onValueChange = {input1=it},Modifier.width(150.dp).onFocusChanged { state ->
if (state == FocusState.Inactive){
// Here I know that Input1 lost focus but how can I determine for sure the focus went to other then Input2 UI element?
if (focusWentNotToInput2){
// Do semething
}
}
}
)
TextField(
value = input2,onValueChange = {input2=it},Modifier.width(150.dp)
)
}
解决方法
我找到了一个解决方案,但不是 100% 喜欢它。至少它有效。
如果 input2 获得焦点,我将设置一个标志,如果 input1 失去焦点,我将等待 50 毫秒,如果 isInput2Focused
标志未触发,则其他一些 ui 元素处于焦点
var isInput2Focused by remember { mutableStateOf(false)}
var input1 by remember { mutableStateOf("") }
var input2 by remember { mutableStateOf("") }
val coroutineScope = rememberCoroutineScope()
Column{
TextField(
value = input1,onValueChange = {input1=it},Modifier.width(150.dp).onFocusChanged { state ->
if (state.isFocused) isInput2Focused = false
else{
coroutineScope.launch {
delay(50)
if (!isInput2Focused){
// Do semething
}
}
}
}
)
TextField(
value = input2,onValueChange = {input2=it},Modifier.width(150.dp).onFocusChanged { state ->
if (state.isFocused) isInput2Focused = true
}
)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。