如何在常规应用程序中正确处理键盘转义按钮?如果您遵循辅助功能指南,它应该会触发后退导航。
在旧的 Android 方式中,处理方式如下:
class MainActivity: Activity
...
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_ESCAPE) {
Log.d("T", "onKeyUp: KEYCODE_BACK")
onBackPressed()
}
return super.onKeyUp(keyCode, event)
}
如何在 Jetpack Compose 中正确处理这个问题?
您可以使用键盘修饰符,例如
Modifier.onKeyEvent
例如,在应用程序的根目录下:
Box(
modifier = Modifier
.onKeyEvent {
if(it.key == Key.Escape) {
// Assuming you are using jetpack compose navigation
navController.popBackStack()
}
true
}
) {
// Your content
}
在主活动中
override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_ESCAPE) {
onBackPressedDispatcher.onBackPressed()
//Your code
}
if (keyCode == KeyEvent.KEYCODE_BACK) {
//Your code
}
return super.onKeyUp(keyCode, event)
}
您可以在
中编写自定义方法 private val mainViewModel: MainViewModel by viewModels()
并在//您的代码中调用它,例如我用它来隐藏底部栏或再次显示它
mainViewModel.changeIsBottomBarVisible(true)