Android 14 (API düzeyi 34) ve sonraki sürümler, kullanıcıların ekran kalemi kullanarak herhangi bir uygulamada herhangi bir metin girişi alanına yazmalarına olanak tanır. EditText
bileşenleri ve WebView
metin widget'ları dahil Android metin giriş alanları varsayılan olarak ekran kalemiyle girişi destekler.
Ancak uygulamanız özel metin giriş alanları gerektiriyorsa (bkz. Özel metin düzenleyiciler) veya metin giriş alanlarının bir çizim yüzeyiyle yer paylaşımlı olarak bulunduğu karmaşık bir düzene sahipse uygulamanızı özelleştirmeniz gerekir.
EditText
Android 14 ve sonraki sürümlerde varsayılan olarak tüm EditText
alanlarında ekran kalemiyle el yazısı etkindir. Görünümün el yazısı sınırları içinde 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üntünün etrafında 40 dp dikey dolgu ve 10 dp yatay dolgu içerir. setHandwritingBoundsOffsets()
ile el yazısı sınırlarını ayarlayın.
setAutoHandwritingEnabled(false)
ile el yazısını devre dışı bırakın.
Giriş yetkisi
Uygulamalar, metin giriş alanları gibi görünen yer tutucu kullanıcı arayüzü öğeleri görüntüleyebilir, ancak aslında metin giriş özelliği olmayan statik kullanıcı arayüzü öğeleridir. Arama alanları buna yaygın bir örnektir. Statik kullanıcı arayüzü öğesine dokunulduğunda, giriş için odaklanmış işlevsel bir metin giriş alanı içeren yeni bir kullanıcı arayüzüne geçişi tetikler.
Ekran kalemi giriş yetkisi
Yer tutucu giriş alanlarında ekran kalemiyle el yazısı girişini desteklemek için el yazısı yetkilendirme API'lerini kullanın (bkz.
setHandwritingDelegatorCallback()
ve
setIsHandwritingDelegate()
).
Yer tutucu kullanıcı arayüzü öğesi, el yazısını işlevsel bir giriş alanına yetki verecek şekilde
yapılandırılmıştı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); }
Ekran kaleminin yer tutucu metin giriş alanı görünümü üzerinde hareket etmesi geri çağırmayı başlatır.
Geri çağırma, işlevsel giriş alanını göstermek ve odaklamak için kullanıcı arayüzü geçişini tetikler. Geri çağırma uygulaması, genellikle yer tutucu öğedeki bir tıklama işleyici uygulamasıyla aynıdır. İşlevsel giriş alanı bir InputConnection
oluşturduğunda ekran kalemi el yazısı modu başlar.
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ı yetkisi verme, Malzeme kitaplığında yapılandırılmıştır. Uygulamanızda ek geliştirme yapmanız gerekmez.
Çizim yüzeyleriyle örtüşme
Uygulamanızın yüzeyinde bir metin alanı bulunan çizim yüzeyi varsa kullanıcının çizim yapabilmesi için ekran kalemiyle el yazısını devre dışı bırakmanız gerekebilir. İlgili konu: setAutoHandwritingEnabled()
.
Test etme
Ekran kalemiyle el yazısı, Android 14 ve sonraki sürümleri çalıştıran, uyumlu bir ekran kalemi giriş cihazı ve Android 14 ekran kalemi el yazısı API'lerini destekleyen bir giriş yöntemi düzenleyicisi (IME) bulunan cihazlarda desteklenir.
Ekran kalemi giriş cihazınız yoksa aşağıdaki Android Debug Bridge (adb) komutlarını kullanarak root erişimi olan (emülatörler dahil) tüm cihazlarda ekran kalemi 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
Ekran kalemini desteklemeyen bir cihaz kullanıyorsanız test için Gboard beta sürümünü kullanın.
Ek kaynaklar
- Materyal Tasarım — Metin alanları
- Özel metin düzenleyiciler