Wprowadzanie rysikiem w polach tekstowych

Biblioteka Jetpack androidx.compose.material3 umożliwia użytkownikom pisanie w dowolnym komponencie TextField w dowolnej aplikacji za pomocą rysika.

Rysunek 1. Wprowadzanie tekstu odręcznego za pomocą rysika.

Aby domyślnie umożliwić wprowadzanie tekstu za pomocą rysika, dodaj zależność biblioteki do pliku build.gradle aplikacji:

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Odlotowy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.1.1"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

TextField

Pismo odręczne rysikiem jest domyślnie włączone we wszystkich komponentach TextField na Androidzie 14 i nowszych oraz w zależności od androidx.compose.foundation:foundation:1.7.0. Tryb pisma odręcznego w polu TextField jest uruchamiany, gdy wykryte zostanie zdarzenie ruchu rysika w granicach pisma odręcznego komponentu.

Ograniczenia pisma odręcznego obejmują 40 dp pionowego dopełnienia i 10 dp poziomego dopełnienia wokół pola do wprowadzania danych.

Pole do wprowadzania danych otoczone prostokątem, które wskazuje granice wykrywania zdarzeń ruchu rysika.
Rysunek 2. Granice pisma odręcznego w TextField komponentach.

Pismo odręczne rysikiem nie jest obsługiwane w polach TextField, gdy wymagane jest użycie edytora metod wprowadzania w KeyboardType.Password.

Przekazywanie danych wejściowych

Aplikacje mogą wyświetlać zastępcze elementy interfejsu, które wyglądają jak pola do wprowadzania tekstu, ale w rzeczywistości są tylko statycznymi elementami interfejsu, które nie mają możliwości wprowadzania tekstu. Typowym przykładem są pola wyszukiwania. Kliknięcie statycznego elementu interfejsu uruchamia przejście do nowego interfejsu, który zawiera funkcjonalne pole do wprowadzania tekstu.

Rysunek 3. Dane wejściowe przekazywania dostępu ze statycznego elementu interfejsu użytkownika do pola do wprowadzania tekstu.

Przekazywanie dostępu do wprowadzania rysika

Używaj interfejsów API przekazywania pisma odręcznego, aby obsługiwać pismo odręczne rysikiem w zastępczych polach do wprowadzania danych (patrz handwritingDetector i handwritingHandler). Zastępczy element interfejsu jest skonfigurowany tak, aby przekazywać pismo odręczne do działającego pola do wprowadzania danych. Przykład implementacji znajdziesz w artykule HandwritingDetectorSample.kt.

Tryb pisma odręcznego rysikiem uruchamia się, gdy funkcjonalne pole wejściowe zostanie zaznaczone i utworzy InputConnection.

Rysunek 4. Przekazywanie danych wejściowych rysikiem ze statycznego elementu interfejsu użytkownika do pola do wprowadzania tekstu.

Testowanie

Pismo odręczne rysikiem jest obsługiwane na urządzeniach z Androidem 14 i nowszym wyposażonym w zgodne urządzenie wejściowe rysikiem oraz z edytorem metod wprowadzania (IME), który obsługuje interfejsy API pisma odręcznego rysikiem w Androidzie 14.

Jeśli nie masz urządzenia wejściowego rysika, wykonaj symulację wprowadzania rysika na dowolnym urządzeniu z dostępem roota (w tym emulatorami) za pomocą tych poleceń 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

Jeśli używasz urządzenia, które nie obsługuje stylu, użyj Gboard w wersji beta do testów.

Dodatkowe materiały