Android 14 (livello API 34) e versioni successive consentono agli utenti di scrivere in qualsiasi input di testo
in qualsiasi app con uno stilo. Campi di immissione testo su Android, tra cui
Componenti di EditText
e
WebView
widget di testo, supporto
input stilo per impostazione predefinita.
Tuttavia, se l'app richiede campi di immissione di testo personalizzati (vedi Testo personalizzato editor) o ha un layout complesso con campi di immissione testo sovrapposti a una superficie di disegno, devi personalizzare l'app.
EditText
La scrittura a mano libera con lo stilo è attiva per tutti i campi EditText
per impostazione predefinita su Android 14
e superiori. La modalità Scrittura a mano libera viene avviata per un EditText
quando si muove uno stilo
viene rilevato entro i limiti della scrittura a mano libera.
I limiti della scrittura a mano libera includono 40 dp di spaziatura interna verticale e 10 dp di spaziatura orizzontale
una spaziatura interna attorno alla vista. Regola i limiti di scrittura a mano libera con
setHandwritingBoundsOffsets()
Disattiva scrittura a mano libera con
setAutoHandwritingEnabled(false)
Delega input
Le app possono mostrare elementi UI segnaposto che sembrano essere campi di immissione di testo, ma sono solo elementi statici dell'interfaccia utente senza funzionalità di input di testo. Rete di ricerca sono un esempio comune. Il tocco dell'elemento statico dell'interfaccia utente attiva una transizione a una nuova UI contenente un campo di immissione di testo funzionale specifico per l'input.
Delega input stilo
Usa le API di delega della scrittura a mano libera per supportare l'inserimento della scrittura a mano libera con lo stilo per
campi di immissione segnaposto (vedi
setHandwritingDelegatorCallback()
e
setIsHandwritingDelegate()
).
L'elemento UI segnaposto è configurato per delegare la scrittura a mano libera a un componente
campo di immissione, ad esempio:
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); }
Il movimento dello stilo sopra la visualizzazione del campo di immissione del testo segnaposto richiama il callback.
Il callback attiva la transizione dell'UI per mostrare e impostare lo stato attivo dell'input funzionale
. L'implementazione del callback è in genere la stessa dell'implementazione
per un listener di clic sull'elemento segnaposto. Quando il campo di immissione funzionale
crea un
InputConnection
,
viene avviata la modalità di scrittura a mano libera con stilo.
Material Design
La
com.google.android.material.search
di Cloud Shell offre
SearchBar
e
SearchView
corsi
per facilitare l'implementazione del pattern UI segnaposto.
Le visualizzazioni segnaposto e delle ricerche funzionali sono collegate a
setUpWithSearchBar()
La delega per la scrittura a mano libera viene configurata nella raccolta Material senza ulteriori di sviluppo richiesto nella tua app.
Sovrapposizione con superfici di disegno
Se l'app ha una superficie di disegno con un campo di testo sovrapposto,
potrebbe essere necessario disattivare la scrittura a mano libera con lo stilo per consentire all'utente di disegnare. Consulta
setAutoHandwritingEnabled()
Test
La scrittura a mano libera con lo stilo è supportata sui dispositivi Android 14 e versioni successive con un un dispositivo di immissione stilo compatibile e un metodo di immissione Editor (IME) che supporta le API di scrittura a mano libera con stilo Android 14.
Se non hai un dispositivo di input con lo stilo, simula l'input dello stilo su qualsiasi dispositivo con accesso root (inclusi gli emulatori) utilizzando il seguente Android Debug Bridge Comandi (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 versione beta di Gboard per i test se usi un dispositivo che non supporta stilo.
Risorse aggiuntive
- Material Design: campi di testo
- Editor di testo personalizzati