0Pricing
Android Academy · Урок

Параметры и действия клавиатуры

Типы клавиатур, действия 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 — локальная установка не требуется.

Все уроки этого курса

  1. TextField и пользовательский ввод
  2. Управление состоянием формы
  3. Проверка ввода
  4. Параметры и действия клавиатуры
← Назад к Android Academy