Android 14 (уровень API 34) и выше позволяют пользователям вводить текст в любое текстовое поле ввода в любом приложении с помощью стилуса. Поля ввода текста в Android, включая компоненты EditText и текстовые виджеты WebView , по умолчанию поддерживают ввод с помощью стилуса.
Однако, если ваше приложение требует настраиваемых текстовых полей ввода (см. раздел «Настраиваемые текстовые редакторы ») или имеет сложную структуру с текстовыми полями ввода, наложенными на поверхность для рисования, вам потребуется настроить приложение.
EditText
В Android 14 и выше рукописный ввод с помощью стилуса включен по умолчанию для всех полей EditText . Режим рукописного ввода запускается для поля EditText при обнаружении события движения стилуса в пределах границ поля ввода.
Границы рукописного ввода включают 40 dp вертикального отступа и 10 dp горизонтального отступа вокруг области просмотра. Настройте границы рукописного ввода с помощью setHandwritingBoundsOffsets() . Отключите рукописный ввод с помощью setAutoHandwritingEnabled(false) .

EditText для рукописного ввода.Делегирование ввода
В приложениях могут отображаться элементы пользовательского интерфейса-заглушки, которые выглядят как текстовые поля ввода, но на самом деле являются просто статическими элементами интерфейса без возможности ввода текста. Поля поиска — распространенный пример. Нажатие на статический элемент интерфейса запускает переход к новому интерфейсу, содержащему функциональное текстовое поле ввода, которое находится в фокусе для ввода данных.
Делегирование ввода стилуса
Используйте API делегирования рукописного ввода для поддержки ввода рукописного текста с помощью стилуса для полей ввода-заполнителей (см. setHandwritingDelegatorCallback() и setIsHandwritingDelegate() ). Элемент пользовательского интерфейса-заполнитель настроен на делегирование рукописного ввода функциональному полю ввода, например:
Котлин
if (Build.VERSION.SDK_INT >= 34) { placeholderInputField.setHandwritingDelegatorCallback { showAndFocusDelegateInputField() } delegateInputField.setIsHandwritingDelegate(true) }
Java
if (Build.VERSION.SDK_INT >= 34) { placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate); delegateInputField.setIsHandwritingDelegate(true); }
Движение стилуса над полем ввода текста-заполнителя вызывает функцию обратного вызова. Эта функция запускает переход пользовательского интерфейса для отображения и фокусировки функционального поля ввода. Реализация функции обратного вызова обычно аналогична реализации обработчика клика по элементу-заполнителю. Когда функциональное поле ввода создает объект InputConnection , запускается режим рукописного ввода с помощью стилуса.
Материальный дизайн
Библиотека com.google.android.material.search предоставляет классы SearchBar и SearchView для упрощения реализации шаблона пользовательского интерфейса с использованием заполнителей.
Заполнители и функциональные поля поиска связаны функцией setUpWithSearchBar() .
Делегирование рукописного ввода настраивается в библиотеке Material, и в вашем приложении не требуется дополнительная разработка.
Перекрытие с поверхностями для рисования
Если в вашем приложении есть поверхность для рисования, на которую наложено текстовое поле, вам может потребоваться отключить рукописный ввод с помощью стилуса, чтобы разрешить пользователю рисовать. См. setAutoHandwritingEnabled() .
Тестирование
Поддержка рукописного ввода с помощью стилуса доступна на устройствах 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 для тестирования.
Дополнительные ресурсы
- Материальный дизайн — Текстовые поля
- Пользовательские текстовые редакторы
