Jetpack 撰写手柄转义或后退按钮?

问题描述 投票:0回答:2

如何在常规应用程序中正确处理键盘转义按钮?如果您遵循辅助功能指南,它应该会触发后退导航。

在旧的 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 中正确处理这个问题?

android keyboard accessibility android-jetpack-compose
2个回答
0
投票

解决方案

您可以使用键盘修饰符,例如

Modifier.onKeyEvent

示例

例如,在应用程序的根目录下:


Box(
    modifier = Modifier
        .onKeyEvent {
            if(it.key == Key.Escape) {
                // Assuming you are using jetpack compose navigation
                navController.popBackStack()
            }
            true
        }
) {
    // Your content
}

0
投票

在主活动中

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)
© www.soinside.com 2019 - 2024. All rights reserved.