Metin alanlarında ekran kalemi girişi

Oluşturma yöntemini deneyin
Android için önerilen kullanıcı arayüzü araç seti Jetpack Compose'dur. Oluştur'da ekran kalemi ile nasıl çalışacağınızı öğrenin.

Android 14 (API düzeyi 34) ve sonraki sürümler, kullanıcıların ekran kalemiyle herhangi bir uygulamadaki metin giriş alanlarına yazmalarını sağlar. EditText bileşenleri ve WebView metin widget'ları da dahil olmak üzere Android metin giriş alanları varsayılan olarak ekran kalemi girişini destekler.

Ancak uygulamanız özel metin giriş alanları gerektiriyorsa (Özel metin düzenleyiciler bölümüne bakın) veya çizim yüzeyinin üzerine metin giriş alanlarının yerleştirildiği karmaşık bir düzene sahipse uygulamanızı özelleştirmeniz gerekir.

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

EditText

Ekran kalemiyle el yazısı, Android 14 ve sonraki sürümlerde tüm EditText alanları için varsayılan olarak etkindir. Görüntünün el yazısı sınırları içinde bir ekran kalemi hareketi etkinliği algılandığında EditText için el yazısı modu başlatılır.

El yazısı sınırları, görünümün etrafında 40 dp dikey ve 10 dp yatay dolgu içerir. El yazısı sınırlarını setHandwritingBoundsOffsets() ile ayarlayın. setAutoHandwritingEnabled(false) ile el yazısını devre dışı bırakın.

Kalem hareketi etkinliklerinin algılama sınırlarını belirten çevreleyen dikdörtgen içeren giriş alanı.
Şekil 2. EditText alanlarının el yazısı sınırları.

Giriş yetkisi verme

Uygulamalar, metin giriş alanı gibi görünen ancak aslında metin girişi özelliği olmayan statik kullanıcı arayüzü öğeleri gösterebilir. Arama alanları buna yaygın bir örnektir. Statik kullanıcı arayüzü öğesine dokunulduğunda, girişe odaklanan işlevsel bir metin giriş alanı içeren yeni bir kullanıcı arayüzüne geçiş yapılır.

Şekil 3. Statik kullanıcı arayüzü öğesinden metin giriş alanına giriş yetkilendirmesi.

Ekran kalemi girişi yetkisi

Yer tutucu giriş alanları için ekran kalemi el yazısı girişini desteklemek amacıyla el yazısı yetkilendirme API'lerini kullanın (setHandwritingDelegatorCallback() ve setIsHandwritingDelegate() bölümüne bakın). Yer tutucu kullanıcı arayüzü öğesi, el yazısını işlevsel bir giriş alanına devretecek şekilde yapılandırılır. Ö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ünün üzerinde ekran kalemi hareket ettirildiğinde geri çağırma işlevi çağrılır. Geri çağırma işlevi, işlevsel giriş alanını göstermek ve odaklamak için kullanıcı arayüzü geçişini tetikler. Geri arama uygulaması genellikle yer tutucu öğesindeki tıklama işleyicinin uygulamasıyla aynıdır. İşlevsel giriş alanı bir InputConnection oluşturduğunda ekran kalemi el yazısı modu başlar.

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

Materyal Tasarım

com.google.android.material.search kitaplığı, yer tutucu kullanıcı arayüzü kalıbının uygulanmasını kolaylaştırmak için SearchBar ve SearchView sınıflarını sağlar.

Yer tutucu ve işlevsel arama görünümleri setUpWithSearchBar() ile bağlantılıdır.

El yazısı yetkilendirmesi, uygulamanızda ek geliştirme gerektirmeden Material kitaplığında yapılandırılır.

Çizim yüzeyleriyle çakışma

Uygulamanızda, yüzeyin üzerine yerleştirilmiş bir metin alanı içeren bir çizim yüzeyi varsa kullanıcının çizim yapmasına izin vermek için ekran kalemi el yazısını devre dışı bırakmanız gerekebilir. setAutoHandwritingEnabled() adresine göz atın.

Test

Android 14 ve sonraki sürümleri çalıştıran, uyumlu bir ekran kalemi giriş cihazına ve Android 14 ekran kalemi el yazısı API'lerini destekleyen bir giriş yöntemi düzenleyicisine (IME) sahip cihazlarda ekran kalemi el yazısı desteklenir.

Dokunmatik kalem giriş cihazınız yoksa aşağıdaki Android Debug Bridge (adb) komutlarını kullanarak kök erişimi olan herhangi bir cihazda (emülatörler dahil) dokunmatik kalem girişini simüle edin:


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

Dokunmatik kalem desteklemeyen bir cihaz kullanıyorsanız test için Gboard beta sürümünü kullanın.

Ek kaynaklar