键盘选项与操作
了解键盘类型、IME 操作和焦点
键盘选项与操作 是 CoddyKit 上的免费 Android Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 4 节课。
选择合适的键盘
精心设计的表单会显示正确的屏幕键盘:电话号码使用数字键盘,电子邮件提供 @ 键,并提供“下一步”按钮在字段之间移动。Compose 使用 KeyboardOptions 和 KeyboardActions 控制这一切。
在本课中,您将设置键盘类型和 IME 操作,并管理字段之间的焦点。
选择键盘类型
将 KeyboardOptions 传递给文本字段,并设置 keyboardType。系统随后会显示适合该数据的键盘。
常见的值包括:Text、Number、Email、Phone、Password。
var email by remember { mutableStateOf("") }
OutlinedTextField(
value = email,
onValueChange = { email = it },
label = { Text("Email") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Email
)
)数字键盘
对于数量或 PIN,请使用 KeyboardType.Number。将它与输入过滤结合使用,只接受数字,正如您在验证课程中学到的那样。
var pin by remember { mutableStateOf("") }
OutlinedTextField(
value = pin,
onValueChange = { pin = it.filter { c -> c.isDigit() } },
label = { Text("PIN") },
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number
)
)隐藏密码
密码应当进行遮挡。将 visualTransformation = PasswordVisualTransformation() 与密码键盘类型结合使用。
状态中仍然保存真实字符,只有显示内容会被遮挡。
var password by remember { mutableStateOf("") }
OutlinedTextField(
value = password,
onValueChange = { password = it },
label = { Text("Password") },
visualTransformation = PasswordVisualTransformation(),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Password
)
)IME 操作按钮
键盘右下角的按键就是 IME 操作按钮。使用 imeAction 设置它。使用 Next 移动到下一个字段,并在最后一个字段使用 Done。
OutlinedTextField(
value = name,
onValueChange = { name = it },
label = { Text("Name") },
keyboardOptions = KeyboardOptions(
imeAction = ImeAction.Next
)
)响应 IME 操作
若要响应用户点击该按钮,请传入 KeyboardActions。每个操作(onNext、onDone、onSearch)都是由您实现的 lambda。
这里点击 Done 后会隐藏键盘。
val keyboard = LocalSoftwareKeyboardController.current
OutlinedTextField(
value = text,
onValueChange = { text = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { keyboard?.hide() }
)
)将焦点移动到下一个字段
对于多字段表单,“下一步”按钮应跳转到后续字段。使用 LocalFocusManager 并调用 moveFocus。
val focusManager = LocalFocusManager.current
OutlinedTextField(
value = email,
onValueChange = { email = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
keyboardActions = KeyboardActions(
onNext = { focusManager.moveFocus(FocusDirection.Down) }
)
)点击完成时清除焦点
在最后一个字段中,清除焦点会关闭键盘,并取消字段选中状态。在 onDone 中调用 focusManager.clearFocus()。
OutlinedTextField(
value = password,
onValueChange = { password = it },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
onDone = { focusManager.clearFocus() }
)
)以编程方式请求焦点
有时您希望界面一出现,某个字段就自动获得焦点,例如搜索框。附加一个 FocusRequester,并在 LaunchedEffect 中请求焦点。
val focusRequester = remember { FocusRequester() }
LaunchedEffect(Unit) { focusRequester.requestFocus() }
OutlinedTextField(
value = query,
onValueChange = { query = it },
modifier = Modifier.focusRequester(focusRequester),
label = { Text("Search") }
)大小写转换和自动更正
KeyboardOptions 还可以控制 capitalization 和 autoCorrectEnabled。姓名可以设置为每个单词首字母大写;用户名则可以关闭自动更正,避免内容被错误修改。
OutlinedTextField(
value = fullName,
onValueChange = { fullName = it },
label = { Text("Full name") },
keyboardOptions = KeyboardOptions(
capitalization = KeyboardCapitalization.Words,
autoCorrectEnabled = false
)
)纯 Kotlin:选择 IME 操作
“除最后一个字段外都使用 Next,最后一个字段使用 Done”这一逻辑就是普通的 Kotlin。这里将字段位置映射到它们应显示的操作标签。
fun imeActionFor(index: Int, lastIndex: Int): String =
if (index == lastIndex) "Done" else "Next"
fun main() {
val fields = listOf("name", "email", "password")
fields.forEachIndexed { i, field ->
println("$field -> ${imeActionFor(i, fields.lastIndex)}")
}
}快速检查
您希望键盘右下角的按钮显示“下一步”,点击后将焦点移动到下方字段。需要哪两个部分?
回顾
现在,您可以构建能够灵活适配键盘的表单:
KeyboardOptions设置keyboardType、imeAction、大小写转换和自动更正。- 使用
PasswordVisualTransformation遮挡密码。 KeyboardActions响应 Next、Done 和 Search。LocalFocusManager移动或清除焦点;FocusRequester可按需让字段获得焦点。
至此,表单构建工具包就完成了:输入、状态、验证和键盘。您已经可以构建精致且友好的 Compose 表单了。
常见问题解答
「键盘选项与操作」课时是免费的吗?
是的 — 「键盘选项与操作」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 4 节课。
「键盘选项与操作」这节课中我会学到什么?
了解键盘类型、IME 操作和焦点 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Android Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「键盘选项与操作」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Android Academy 课中编写并运行代码吗?
能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- TextField 与用户输入
- 管理表单状态
- 验证输入
- 键盘选项与操作