Библиотека Jetpack androidx.compose.material3 позволяет пользователям писать стилусом в любом компоненте TextField в любом приложении.
Чтобы включить ввод с помощью стилуса по умолчанию, добавьте в файл build.gradle своего приложения зависимость библиотеки:
Kotlin
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 горизонтального отступа вокруг поля ввода.
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 – текстовые поля
- Обработка пользовательского ввода