Input stilo nei campi di testo

La libreria Jetpack androidx.compose.material3 consente agli utenti di scrivere in qualsiasi componente TextField di qualsiasi app utilizzando uno stilo.

Figura 1. Input scritto a mano con uno stilo.

Per abilitare l'input dello stilo per impostazione predefinita, aggiungi la dipendenza della libreria al file build.gradle della tua app:

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.7.0")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

trendy

dependencies {
    implementation 'androidx.compose.foundation:foundation:1.7.0'
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

TextField

La scrittura a mano libera con lo stilo è abilitata per impostazione predefinita per tutti i componenti di TextField su Android 14 e versioni successive e la dipendenza da androidx.compose.foundation:foundation:1.7.0. La modalità di scrittura a mano libera viene avviata per un TextField quando viene rilevato un evento di movimento dello stilo all'interno dei limiti di scrittura a mano libera del componente.

I limiti di scrittura a mano libera includono 40 dp di spaziatura interna verticale e 10 dp di spaziatura interna orizzontale intorno al campo di immissione.

Campo di immissione con un rettangolo circostante che indica i limiti per il rilevamento di eventi di movimento dello stilo.
Figura 2. Limiti della scrittura a mano libera di TextField componenti.

La scrittura a mano libera con lo stilo non è supportata per i campi TextField quando l'editor del metodo di immissione viene richiesto con KeyboardType.Password.

Delega input

Le app possono visualizzare elementi UI segnaposto che sembrano campi di immissione testo, ma in realtà sono solo elementi statici dell'interfaccia utente senza funzionalità di immissione testo. I campi di ricerca ne sono un esempio comune. Se tocchi un elemento UI statico, viene attivata una transizione a una nuova UI contenente un campo di immissione testo funzionale.

Figura 3. Delega di input da elemento UI statico al campo di immissione testo.

Delega input stilo

Utilizza le API di delega della scrittura a mano libera per supportare l'inserimento della scrittura a mano libera con lo stilo per i campi di immissione segnaposto (vedi handwritingDetector e handwritingHandler). L'elemento UI segnaposto è configurato per delegare la scrittura a mano libera a un campo di immissione funzionale. Per un esempio di implementazione, consulta HandwritingDetectorSample.kt.

La modalità di scrittura a mano libera con lo stilo si avvia quando il campo di immissione funzionale diventa attivo e crea un elemento InputConnection.

Figura 4. Delega di input dello stilo da un elemento UI statico a un campo di immissione di testo.

Test

La scrittura a mano libera con lo stilo è supportata su dispositivi Android 14 e versioni successive con un dispositivo di immissione stilo compatibile e un editor di metodi di input (IME) che supporta le API di scrittura a mano libera per 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 i seguenti comandi 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 versione beta di Gboard per eseguire test se usi un dispositivo che non supporta lo stilo.

Risorse aggiuntive