Lin*_* Li 10 android kotlin android-jetpack-compose
return ComposeView(requireContext()).apply {
setContent {
Box(
Modifier
.onKeyEvent {
if (it.isCtrlPressed && it.key == Key.A) {
println("Ctrl + A is pressed")
true
} else {
false
}
}
.focusable()
)
}
}
Run Code Online (Sandbox Code Playgroud)
为什么使用平板硬件键盘时无法在fragment中调用按键事件?
Phi*_*hov 11
正如文档所说onKeyEvent
:
将允许它在它(或其子级之一)聚焦时拦截硬件按键事件。
这意味着你需要让你的盒子聚焦,而不仅仅是可聚焦。为此,您需要一个FocusRequester
,在我的示例中,我在视图呈现时询问焦点。查看本文中的更多内容
对于未来的说明,如果用户点击文本字段,您的框将失去焦点,但onKeyEvent
如果此 txt 字段位于框内,则仍然可以工作
看起来空框无法获得焦点,因此您需要使用修饰符添加一些大小。它仍然是不可见的:
val requester = remember { FocusRequester() }
Box(
Modifier
.onKeyEvent {
if (it.isCtrlPressed && it.key == Key.A) {
println("Ctrl + A is pressed")
true
} else {
false
}
}
.focusRequester(requester)
.focusable()
.size(10.dp)
)
LaunchedEffect(Unit) {
requester.requestFocus()
}
Run Code Online (Sandbox Code Playgroud)
或者,只需添加内容Box
即可拉伸,并且.size
不再需要修改器
此代码适用于我的蓝牙键盘 + Android 智能手机,模拟器似乎无法识别CTRL
归档时间: |
|
查看次数: |
5209 次 |
最近记录: |