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 attivare l'input con stilo per impostazione predefinita, aggiungi la dipendenza della libreria al file build.gradle della tua 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 scrittura a mano libera con lo stilo è attivata per impostazione predefinita per tutti i componenti TextField su Android 14 e versioni successive e la dipendenza androidx.compose.foundation:foundation:1.7.0. La modalità di scrittura a mano viene avviata per un TextField quando viene rilevato un evento di movimento dello stilo all'interno dei limiti di scrittura a mano del componente.

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

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

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

Delega dell'input

Le app possono visualizzare elementi dell'interfaccia utente segnaposto che sembrano campi di input di testo, ma in realtà sono solo elementi dell'interfaccia utente statici senza funzionalità di input di testo. I campi di ricerca sono un esempio comune. Se tocchi l'elemento UI statico, viene attivata una transizione a una nuova UI che contiene un campo di input di testo funzionale su cui è attivo lo stato attivo per l'input.

Figura 3. Delega dell'input dall'elemento UI statico al campo di immissione del testo.

Delega dell'input dello stilo

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

La modalità di scrittura a mano libera con lo stilo si avvia quando il campo di input funzionale acquisisce lo stato attivo e crea un InputConnection.

Figura 4. Delega dell'input dello stilo dall'elemento UI statico al campo di immissione del testo.

Test

La scrittura a mano con stilo è supportata sui dispositivi con Android 14 e versioni successive con un dispositivo di input stilo compatibile e un editor del metodo di input (IME) che supporta le API di scrittura a mano con stilo di Android 14.

Se non hai un dispositivo di input con stilo, simula l'input con stilo su qualsiasi dispositivo con accesso root (inclusi gli emulatori) utilizzando i seguenti comandi di 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

Utilizza la versione beta di Gboard per i test se utilizzi un dispositivo che non supporta lo stilo.

Risorse aggiuntive