Input stilus di kolom teks

Android 14 (level API 34) dan yang lebih baru memungkinkan pengguna menulis ke input teks apa pun di aplikasi apa pun menggunakan stilus. Kolom entri teks Android, termasuk dan komponen EditText Widget teks WebView, dukungan input stilus secara default.

Namun, jika aplikasi Anda memerlukan kolom input teks kustom (lihat Teks kustom editor) atau memiliki tata letak kompleks dengan bidang entri teks yang berada di atas permukaan gambar, Anda akan perlu menyesuaikan aplikasi Anda.

Gambar 1. Input tulisan tangan dengan stilus.

EditText

Tulis tangan stilus diaktifkan untuk semua kolom EditText secara default di Android 14 dan lebih tinggi. Mode tulis tangan dimulai untuk EditText saat gerakan stilus terdeteksi dalam batas tulisan tangan tampilan.

Batas tulisan tangan mencakup padding vertikal 40 dp dan horizontal 10 dp padding di sekitar tampilan. Sesuaikan batas tulisan tangan dengan setHandwritingBoundsOffsets() Nonaktifkan tulisan tangan dengan setAutoHandwritingEnabled(false)

Kolom input dengan persegi panjang di sekitarnya yang menunjukkan batas untuk deteksi peristiwa gerakan stilus.
Gambar 2. Batas tulisan tangan dari EditText kolom.

Delegasi input

Aplikasi dapat menampilkan elemen UI placeholder yang tampak seperti kolom input teks tetapi sebenarnya hanyalah elemen UI statis tanpa kemampuan {i>input <i}teks. Telusuri {i>field<i} adalah contoh umumnya. Mengetuk elemen UI statis akan memicu transisi ke UI baru yang berisi kolom input teks fungsional yang difokuskan untuk input.

Gambar 3. Delegasi input dari elemen UI statis ke kolom input teks.

Delegasi input stilus

Gunakan API delegasi tulisan tangan untuk mendukung input tulis tangan stilus untuk isian input placeholder (lihat setHandwritingDelegatorCallback() dan setIsHandwritingDelegate()) Elemen UI placeholder dikonfigurasi untuk mendelegasikan tulisan tangan ke fungsi bidang input, misalnya:

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);
}

Gerakan stilus di atas tampilan kolom input teks placeholder akan memanggil callback. Callback memicu transisi UI untuk menampilkan dan memfokuskan input fungsional kolom tersebut. Implementasi callback biasanya sama dengan implementasi untuk pemroses klik pada elemen placeholder. Kapan kolom input fungsi membuat InputConnection, mode tulis tangan stilus dimulai.

Gambar 4. Delegasi input stilus dari elemen UI statis ke kolom input teks.

Desain Material

Tujuan com.google.android.material.search library menyediakan SearchBar dan Kelas SearchView untuk memfasilitasi implementasi dari pola UI placeholder.

Placeholder dan tampilan penelusuran fungsional ditautkan dengan setUpWithSearchBar()

Delegasi tulisan tangan dikonfigurasi di library Material tanpa tambahan pengembangan aplikasi yang diperlukan.

Tumpang-tindih dengan permukaan gambar

Jika aplikasi Anda memiliki platform gambar dengan kolom teks yang berada di atas permukaan tersebut, Anda mungkin perlu menonaktifkan tulis tangan stilus agar pengguna dapat menggambar. Lihat setAutoHandwritingEnabled()

Pengujian

Tulis tangan stilus didukung di perangkat Android 14 dan yang lebih tinggi dengan perangkat input stilus yang kompatibel dan metode input (IME) yang mendukung API tulis tangan stilus Android 14.

Jika Anda tidak memiliki perangkat input stilus, simulasikan input stilus di perangkat apa pun dengan akses root (termasuk emulator) menggunakan Android Debug Bridge berikut (adb):


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

Gunakan Gboard beta untuk menguji jika Anda menggunakan perangkat yang tidak mendukung stilus.

Referensi lainnya