Параметры и действия клавиатуры
Типы клавиатур, действия IME и фокус
«Параметры и действия клавиатуры» — бесплатный урок Android Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения 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) — это лямбда-функция, которую Вы реализуете.
Здесь нажатие 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) }
)
)Снятие фокуса после Done
В последнем поле снятие фокуса закрывает клавиатуру и отменяет выделение поля. Вызовите focusManager.clearFocus() внутри onDone.
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)}")
}
}Быстрая проверка
Вы хотите, чтобы на кнопке в правом нижнем углу клавиатуры отображалось «Next», а после нажатия фокус переходил на расположенное ниже поле. Какие две составляющие Вам нужны?
Итоги
Теперь Вы умеете создавать формы, учитывающие возможности клавиатуры:
KeyboardOptionsзадаётkeyboardType,imeAction, правила использования заглавных букв и автокоррекцию.- Маскируйте пароли с помощью
PasswordVisualTransformation. KeyboardActionsобрабатывает действия Next, Done и Search.LocalFocusManagerпереводит фокус или снимает его, аFocusRequesterустанавливает фокус на поле по запросу.
На этом набор инструментов для создания форм завершён: ввод, состояние, проверка и клавиатура. Теперь Вы готовы создавать удобные и качественно оформленные формы Compose.
Часто задаваемые вопросы
Урок «Параметры и действия клавиатуры» бесплатный?
Да — полный текст урока «Параметры и действия клавиатуры» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Android Academy, подпишись на CoddyKit PRO. Курс Android Academy содержит 4 уроков всего.
Чему я научусь в уроке «Параметры и действия клавиатуры»?
Типы клавиатур, действия IME и фокус Ты практикуешь Android Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Android Academy?
Предыдущий опыт не требуется. Android Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Параметры и действия клавиатуры»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Android Academy?
Да. Каждый урок Android Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- TextField и пользовательский ввод
- Управление состоянием формы
- Проверка ввода
- Параметры и действия клавиатуры