gpt4 book ai didi

android - 如何使用 Jetpack Compose 将焦点状态设置为按钮?

转载 作者:行者123 更新时间:2023-12-05 00:15:27 24 4
gpt4 key购买 nike

compose_version = '1.0.0-beta02'。

我可以通过 FocusRequester 设置焦点状态 TextField,但 Button 不能。

        val requester1 = FocusRequester()

TextField(value = text1,
{ newValue ->
text1 = newValue
},
modifier = Modifier
.focusable(true)
.focusRequester(requester1)
.background(focusedColor1)
.onFocusChanged {
focusedColor1 = if (it.isFocused) {
text1 = "TextField1 focused"
Color.Red
} else {
text1 = "TextField1 unfocused"
Color.Green
}
}

)

将调用 TextField 的“onFocusChanged”方法。

        val requester3 = FocusRequester()
Button(
onClick = {
requester3.requestFocus()

},
modifier = Modifier
.focusModifier()
.focusable(true)
.focusRequester(requester3)
.onFocusEvent {
Toast
.makeText(
context,
"Button onFocusEvent it.isFocused:${it.isFocused}. ${it.name}",
Toast.LENGTH_SHORT
)
.show()
}
.onFocusChanged {
Toast
.makeText(
context,
"Button onFocusChanged it.isFocused:${it.isFocused}",
Toast.LENGTH_SHORT
)
.show()
}.background(Color.Red)

) {
Text(text = text2,Modifier.background(Color.Red))
}

但是Button的onFocusChanged方法不会被调用。

最佳答案

使用类似的东西:

val focusRequester = FocusRequester()
val interactionSource = remember { MutableInteractionSource() }
val isFocused = interactionSource.collectIsFocusedAsState().value
// if (isFocused....)

Button(
onClick = {
focusRequester.requestFocus()
},
modifier = Modifier
// add focusRequester modifier before the focusable (or even in the parent)
.focusRequester(focusRequester)
.focusable(interactionSource = interactionSource)
){ ... }

关于android - 如何使用 Jetpack Compose 将焦点状态设置为按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66650825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com