Android 14 (nivel de API 34) y las versiones posteriores permiten que los usuarios escriban en cualquier entrada de texto
en cualquier app con una pluma stylus. Los campos de entrada de texto de Android, que incluyen
Componentes de EditText
y
WebView
widgets de texto, compatibilidad
la entrada de la pluma stylus de forma predeterminada.
Sin embargo, si tu app requiere campos de entrada de texto personalizados (consulta Texto personalizado editores) o tiene un diseño complejo con campos de entrada de texto superpuestos sobre una superficie de dibujo, necesitas personalizar tu app.
EditText
La escritura a mano con la pluma stylus está habilitada de forma predeterminada en todos los campos de EditText
en Android 14
y versiones posteriores. Se inicia el modo de escritura a mano para una EditText
cuando se activa un movimiento de la pluma stylus.
si se detecta un evento de escritura a mano dentro de los límites de la vista.
Los límites de escritura a mano incluyen 40 dp de padding vertical y 10 dp de padding horizontal.
padding alrededor de la vista. Ajusta los límites de escritura a mano con
setHandwritingBoundsOffsets()
Inhabilitar la escritura a mano con
setAutoHandwritingEnabled(false)
Delegación de entrada
Las apps pueden mostrar elementos de la IU de marcador de posición que parecen ser campos de entrada de texto, pero en realidad son solo elementos estáticos de la IU sin capacidad de entrada de texto. Búsqueda son un ejemplo común. Cuando se presiona el elemento estático de la IU, se activa una transición a una nueva IU que contiene un campo de entrada de texto funcional enfocado en la entrada.
Delegación de entrada de la pluma stylus
Usa las APIs de delegación de escritura a mano para admitir la entrada de escritura a mano con pluma stylus para
campos de entrada de marcador de posición (consulta
setHandwritingDelegatorCallback()
y
setIsHandwritingDelegate()
).
El elemento de marcador de posición de la IU está configurado para delegar la escritura a mano a una red
campo de entrada, por ejemplo:
Kotlin
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); }
El movimiento de la pluma stylus sobre la vista del campo de entrada de texto del marcador de posición invoca la devolución de llamada.
La devolución de llamada activa la transición de la IU para mostrar y enfocar la entrada funcional
. La implementación de devolución de llamada suele ser la misma que la implementación
para un objeto de escucha de clics en el elemento de marcador de posición. Cuando el campo de entrada funcional
crea un
InputConnection
:
se iniciará el modo de escritura a mano con la pluma stylus.
Material Design
El
com.google.android.material.search
proporciona la
SearchBar
y
SearchView
clases
para facilitar la implementación del patrón de la IU del marcador de posición.
El marcador de posición y las vistas de búsqueda funcional están vinculadas con
setUpWithSearchBar()
La delegación de escritura a mano se configura en la biblioteca de Material sin restricciones y del desarrollo de aplicaciones necesarios para tu aplicación.
Se superpone con las superficies de dibujo
Si tu app tiene una superficie de dibujo con un campo de texto superpuesto,
es posible que deba inhabilitar la escritura a mano con la pluma stylus para permitir que el usuario dibuje. Consulta
setAutoHandwritingEnabled()
Prueba
La escritura a mano con la pluma stylus es compatible con dispositivos Android 14 y versiones posteriores que tengan un un dispositivo de entrada con pluma stylus compatible y un método de entrada de seguridad (IME) que admite las APIs de escritura a mano con pluma stylus de Android 14.
Si no tienes un dispositivo de entrada con pluma stylus, simula una entrada de pluma stylus en cualquier dispositivo con acceso con permisos de administrador (incluidos los emuladores) mediante 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
Usa la versión beta de Gboard para realizar pruebas si usas un dispositivo que no es compatible pluma stylus.
Recursos adicionales
- Material Design: Campos de texto
- Editores de texto personalizados