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.
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ı.](https://developer.android.com/static/images/develop/ui/compose/touch-input/stylus-input/shared/edittext_handwriting_bounds.png?authuser=0&hl=tr)
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.
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.
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
- Materyal Tasarım — Metin alanları
- Özel metin düzenleyiciler