Metin alanlarında ekran kalemi girişi

Android 14 (API düzeyi 34) ve sonraki sürümler, kullanıcıların herhangi bir metin girişine yazmasına olanak tanır herhangi bir uygulamada ekran kalemi kullanarak. Aşağıdakiler dahil olmak üzere Android metin girişi alanları: EditText bileşenleri ve WebView metin widget'ları, destek varsayılan olarak ekran kalemi girişine dokunun.

Ancak, uygulamanız özel metin giriş alanları gerektiriyorsa (bkz. Özel metin düzenleyenler) veya bir çizim yüzeyinde metin giriş alanlarının yer aldığı karmaşık bir düzene sahipse, gerektiği konusunda karar vermemiz gerekir.

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

EditText

Android 14'te ekran kalemiyle el yazısı tüm EditText alanları için varsayılan olarak etkindir ve daha yüksek olabilir. Ekran kalemi hareket ettiğinde EditText için el yazısı modu başlatılır etkinliği algılanır.

El yazısı sınırları 40 dp dikey dolgu ve 10 dp yatay dolgu içerir. dolgudur. El yazısı sınırlarını şununla ayarla: setHandwritingBoundsOffsets(). El yazısını şununla devre dışı bırak: setAutoHandwritingEnabled(false).

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

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. setHandwritingDelegatorCallback() ve setIsHandwritingDelegate()). Yer tutucu kullanıcı arayüzü öğesi, el yazısını işlevsel bir kullanıcıya giriş alanı, örneğin:

Kotlin

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback {
        showAndFocusDelegateInputField()
    }
    delegateInputField.setIsHandwritingDelegate(true)
}

Java

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate);
    delegateInputField.setIsHandwritingDelegate(true);
}

Yer tutucu metin giriş alanı görünümü üzerinde ekran kaleminin yaptığı hareket, geri çağırmayı çağırır. Geri çağırma, işlevsel girişi göstermek ve odaklamak için kullanıcı arayüzü geçişini tetikler girin. Geri çağırma uygulaması, genellikle kullanabilirsiniz. İşlevsel giriş alanı oluşturur InputConnection ekran kalemi el yazısı modu başlar.

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

Materyal Tasarım

İlgili içeriği oluşturmak için kullanılan com.google.android.material.search kitaplığın sağladığı SearchBar ve SearchView sınıf kullanın.

Yer tutucu ve işlevsel arama görünümleri setUpWithSearchBar().

Malzeme kitaplığında el yazısı yetkisi, ek hiçbir en gerekli geliştirmeler vardır.

Çizim yüzeyleriyle çakışıyor

Uygulamanızda, yüzeyin üzerinde metin alanı bulunan bir çizim yüzeyi varsa Kullanıcının çizim yapabilmesi için ekran kaleminin el yazısını devre dışı bırakması gerekebilir. Görüntüleyin setAutoHandwritingEnabled().

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