return ComposeView(requireContext()).apply {
setContent {
Box(
Modifier
.onKeyEvent {
if (it.isCtrlPressed && it.key == Key.A) {
println("Ctrl + A is pressed")
true
} else {
false
}
}
.focusable()
)
}
}
为什么在使用平板电脑硬件键盘时,按键事件不能分片调用?
2条答案
按热度按时间83qze16e1#
正如
onKeyEvent
的文档所述:将允许它在它(或其子项之一)获得焦点时拦截硬件按键事件。
这意味着你需要让你的框聚焦,而不仅仅是可聚焦。要做到这一点,你需要一个
FocusRequester
,在我的例子中,我要求焦点时,视图呈现。对于未来的注意事项,如果用户点击文本字段,您的框将失去焦点,但如果此txt字段在框内,
onKeyEvent
仍将工作看起来空框不能聚焦,所以你需要用修饰符添加一些大小。它仍然是不可见的:
或者,只需向
Box
添加内容,使其拉伸,不再需要.size
修饰符此代码与我的蓝牙键盘+ Android智能手机工作正常,模拟器似乎无法识别CTRL
6qftjkof2#
如果您使用的是
androidx.compose.material3.OutlinedTextField
,则可以改用KeyboardActions
: