La biblioteca androidx.compose.material3
de Jetpack permite que los usuarios escriban en cualquier componente TextField
de cualquier app con una pluma stylus.
Para habilitar la entrada de la pluma stylus de forma predeterminada, agrega la dependencia de la biblioteca al archivo build.gradle
de la app:
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION" } kotlinOptions { jvmTarget = "LATEST_JVM_VERSION" } }
Groovy
dependencies { implementation 'androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION' } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = 'LATEST_EXTENSION_VERSION' } kotlinOptions { jvmTarget = 'LATEST_JVM_VERSION' } }
TextField
La escritura a mano con la pluma stylus está habilitada para todos los componentes de TextField
de forma predeterminada en Android 14 y versiones posteriores, y para la dependencia de androidx.compose.foundation:foundation:1.7.0
. El modo de escritura a mano se inicia para una TextField
cuando se detecta un evento de movimiento de la pluma stylus dentro de los límites de escritura a mano del componente.
Los límites de escritura a mano incluyen 40 dp de padding vertical y 10 dp de padding horizontal alrededor del campo de entrada.
![Campo de entrada con el rectángulo circundante que indica los límites para la detección de eventos de movimiento de la pluma stylus.](https://developer.android.google.cn/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=8&hl=es)
TextField
.
La escritura a mano con la pluma stylus no es compatible con los campos TextField
cuando se solicita el editor del método de entrada con KeyboardType.Password
.
Delegación de entradas
Las apps pueden mostrar elementos de IU de marcador de posición que parecen ser campos de entrada de texto, pero en realidad son solo elementos de la IU estáticos sin capacidad de entrada de texto. Los campos de 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 para 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 la pluma stylus en los campos de entrada del marcador de posición (consulta handwritingDetector
y handwritingHandler
). El elemento de la IU del marcador de posición está configurado para delegar la escritura a mano a un campo de entrada funcional. Para ver una implementación de ejemplo, consulta HandwritingDetectorSample.kt
.
El modo de escritura a mano con pluma stylus se inicia cuando el campo de entrada funcional se enfoca y crea un InputConnection
.
Prueba
La escritura a mano con pluma stylus es compatible con dispositivos que ejecutan Android 14 y versiones posteriores con un dispositivo de entrada compatible con la pluma stylus y un editor de método de entrada (IME) que admite las APIs de escritura a mano de la pluma stylus de Android 14.
Si no tienes un dispositivo de entrada de la pluma stylus, simula la entrada de esta en cualquier dispositivo con acceso raíz (incluidos los emuladores) con los siguientes comandos de 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 admite la pluma stylus.
Recursos adicionales
- Material Design: campos de texto
- Cómo controlar las entradas del usuario