Metin alanlarında ekran kalemi girişi

Jetpack androidx.compose.material3 kitaplığı, kullanıcıların tarayıcıdaki herhangi bir TextField bileşenine yazmasına ekran kalemi kullanan uygulamalardan bahsedeceğiz.

ziyaret edin.
Şekil 1. Ekran kalemiyle el yazısı giriş.

Ekran kalemi girişini varsayılan olarak etkinleştirmek için kitaplık bağımlılığını uygulamanızın build.gradle dosyası:

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION"
    }

    kotlinOptions {
        jvmTarget = "LATEST_JVM_VERSION"
    }
}

Eski

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = 'LATEST_EXTENSION_VERSION'
    }

    kotlinOptions {
        jvmTarget = 'LATEST_JVM_VERSION'
    }
}

TextField

Ekran kalemiyle el yazısı özelliği, şurada varsayılan olarak tüm TextField bileşenleri için etkindir: Android 14 ve sonraki sürümler androidx.compose.foundation:foundation:1.7.0 desteklenmektedir. Ekran kalemi hareket ettiğinde TextField için el yazısı modu başlatılır etkinliği, bileşenin el yazısı sınırları içinde algılanır.

El yazısı sınırları 40 dp dikey dolgu ve 10 dp yatay dolgu içerir. dolgu.

Ekran kalemi hareketi etkinliklerinin algılanması sınırlarını gösteren, etrafını çevreleyen dikdörtgenin bulunduğu giriş alanı.
Şekil 2. TextField bileşenin el yazısı sınırları.

Giriş yöntemi kullanıldığında TextField alanları için ekran kalemiyle el yazısı desteklenmez KeyboardType.Password ile düzenleyici isteniyor.

Giriş yetkisi

Uygulamalar, metin giriş alanı gibi görünen yer tutucu kullanıcı arayüzü öğelerini gösterebilir, ancak aslında metin girişi özelliği olmayan statik kullanıcı arayüzü öğeleridir. Arama alanları yaygın bir örnektir. Statik kullanıcı arayüzü öğesine dokunduğunuzda bir geçiş tetiklenir girişe odaklanan işlevsel bir metin giriş alanı içeren yeni bir kullanıcı arayüzüne sahiptir.

ziyaret edin.
Şekil 3. Statik kullanıcı arayüzü öğesinden metin giriş alanına yetki girin.

Ekran kalemi girişi yetkisi

Şunlarda ekran kalemi el yazısı girişini desteklemek için el yazısı yetkilendirme API'lerini kullanın: yer tutucu giriş alanları (bkz. handwritingDetector ve handwritingHandler). Yer tutucu kullanıcı arayüzü öğesi el yazısı için işlevsel bir giriş alanına yetki verecek şekilde yapılandırılmıştır. Örneğin, hakkında ayrıntılı bilgi için HandwritingDetectorSample.kt.

İşlevsel giriş alanına odaklanıldığında ekran kalemiyle el yazısı modu başlar ve oluşturur InputConnection.

ziyaret edin.
Şekil 4. Statik kullanıcı arayüzü öğesinden metin giriş alanına ekran kalemi girişi yetkisi.

Test

Ekran kalemiyle el yazısı, Android 14 ve sonraki sürümleri çalıştıran cihazlarda desteklenir. uyumlu ekran kalemi giriş cihazı ve giriş yöntemi düzenleyen (IME) Android 14 ekran kalemi el yazısı API'lerini destekler.

Ekran kalemi giriş cihazınız yoksa her cihazda ekran kalemi girişini simüle edin aşağıdaki Android Debug Bridge'i kullanarak kök erişimi (emülatörler dahil) ile (adb) komutları:


// 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

Desteklenmeyen bir cihaz kullanıyorsanız test için Gboard beta sürümünü kullanın ekran kalemi.

Ek kaynaklar