Input stilo nei campi di testo

Il jetpack androidx.compose.material3 consente agli utenti di scrivere su qualsiasi componente TextField in a qualsiasi app con uno stilo.

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

Per attivare l'input dello stilo per impostazione predefinita, aggiungi la dipendenza della libreria al File build.gradle:

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION"
    }

    kotlinOptions {
        jvmTarget = "LATEST_JVM_VERSION"
    }
}

Alla moda

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 è attiva per tutti i componenti di TextField per impostazione predefinita su Android 14 e versioni successive e androidx.compose.foundation:foundation:1.7.0 la dipendenza. La modalità Scrittura a mano libera viene avviata per un TextField quando si muove uno stilo viene rilevato entro i limiti di scrittura a mano libera del componente.

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

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 TextField componenti.

La scrittura a mano libera con lo stilo non è supportata per i campi TextField quando il metodo di immissione con KeyboardType.Password.

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 handwritingDetector e handwritingHandler). L'elemento UI segnaposto è configurate per delegare la scrittura a mano libera a un campo di immissione funzionale. Ad esempio, implementazione, consulta HandwritingDetectorSample.kt

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

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

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