本文基于Jetpack Compose1.0.4

Jetpack Compose 提供了 SoftwareKeyboardController用于控制软键盘的显示与隐藏,可在Composable中通过LocalSoftwareKeyboardController.current获取

使用

隐藏

1
2
3
4
5
val keyboard = LocalSoftwareKeyboardController.current
// ...
onClick = {
keyboard?.hide()
}

该操作会试图关闭软键盘,如果因为各种原因软键盘暂时无法关闭,则此操作会被忽略

打开

打开软键盘涉及到焦点的获取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 以下代码均在 @Composable 函数中
// 焦点请求器
val focusRequester = remember {
FocusRequester()
}
// 为需要获取焦点的TextField添加此Modifier
BasicTextField(
modifier = Modifier
.fillMaxWidth()
.focusRequester(focusRequester)
)
// 请求焦点
Button(onClick = {
focusRequester.requestFocus()
keyboard?.show()
})

该操作会试图打开软键盘,如果因为各种原因软键盘暂时无法被打开,则此操作会被忽略

关于此系列

此系列并非完整的系列教程,仅针对Jetpack Compose使用中的具体场景给出对应最小化代码。目前Jetpack Compose中文资料非常少,希望我能在这方面做出自己的贡献。

  • 如果要参阅完整项目,可以看我开源的

FunnySaltyFish/FunnyTranslation: 基于Jetpack Compose开发的翻译软件,支持多引擎、插件化~ | Jetpack Compose+MVVM+协程+Room (github.com)