Input stilo nei campi di testo

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.

di Gemini Advanced.
Figura 1. Scrittura a mano libera con uno stilo.

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)

Campo di immissione circondato da un rettangolo che indica i limiti per il rilevamento degli eventi di movimento dello stilo.
. Figura 2. Limiti di scrittura a mano libera di EditText campi.

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.

di Gemini Advanced.
Figura 3. Delega di input da elemento UI statico a campo di immissione testo.

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.

di Gemini Advanced.
Figura 4. Delega di input dello stilo da elemento statico dell'interfaccia utente a campo di immissione testo.

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