Библиотека Jetpack androidx.compose.material3
позволяет пользователям писать в любой компонент TextField
в любом приложении с помощью стилуса.
Чтобы включить ввод стилусом по умолчанию, добавьте зависимость библиотеки в файл build.gradle
вашего приложения:
Котлин
dependencies { implementation("androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION" } kotlinOptions { jvmTarget = "LATEST_JVM_VERSION" } }
классный
dependencies { implementation 'androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION' } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = 'LATEST_EXTENSION_VERSION' } kotlinOptions { jvmTarget = 'LATEST_JVM_VERSION' } }
TextField
Рукописный ввод стилусом включен для всех компонентов TextField
по умолчанию в Android 14 и более поздних версиях, а также в зависимости androidx.compose.foundation:foundation:1.7.0
. Режим рукописного ввода запускается для TextField
, когда событие движения пера обнаруживается в границах рукописного ввода компонента.
Границы рукописного ввода включают 40 dp вертикального заполнения и 10 dp горизонтального заполнения вокруг поля ввода.
![Поле ввода с окружающим прямоугольником, обозначающим границы обнаружения событий движения стилуса.](https://developer.android.com/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?hl=ru)
TextField
. Рукописный ввод стилусом не поддерживается для полей TextField
, когда редактор метода ввода запрашивается с помощью KeyboardType.Password
.
Входное делегирование
Приложения могут отображать элементы пользовательского интерфейса-заполнители, которые выглядят как поля ввода текста, но на самом деле являются просто статическими элементами пользовательского интерфейса без возможности ввода текста. Поля поиска являются распространенным примером. Нажатие на статический элемент пользовательского интерфейса запускает переход к новому пользовательскому интерфейсу, который содержит функциональное поле ввода текста, предназначенное для ввода.
Делегирование ввода стилуса
Используйте API-интерфейсы делегирования рукописного ввода для поддержки рукописного ввода стилусом для полей ввода-заполнителей (см. handwritingDetector
и handwritingHandler
). Элемент пользовательского интерфейса-заполнителя настроен на делегирование рукописного ввода функциональному полю ввода. Пример реализации см. HandwritingDetectorSample.kt
.
Режим рукописного ввода стилусом запускается, когда функциональное поле ввода получает фокус и создает InputConnection
.
Тестирование
Рукописный ввод стилусом поддерживается на устройствах Android 14 и более поздних версий с совместимым устройством ввода стилуса и редактором метода ввода (IME), который поддерживает API-интерфейсы рукописного ввода стилуса Android 14.
Если у вас нет устройства ввода стилуса, смоделируйте ввод стилуса на любом устройстве с root-доступом (включая эмуляторы), используя следующие команды Android Debug Bridge (adb):
// Android 14
adb shell setprop persist.debug.input.simulate_stylus_with_touch true && adb shell stop && adb shell start
// Android 15 and higher
// Property takes effect after screen reconfiguration such as orientation change.
adb shell setprop debug.input.simulate_stylus_with_touch true
Используйте бета-версию Gboard для тестирования, если вы используете устройство, не поддерживающее стилус.
Дополнительные ресурсы
- Material Design — Текстовые поля
- Обработка ввода пользователя