Fokus di kolom teks

Saat pengguna menavigasi UI Compose dengan keyboard hardware, D-pad, atau pengontrol rotasi, kolom teks berpartisipasi dalam navigasi fokus bersama target fokus lainnya.

Secara default, fokus tidak terperangkap di kolom teks. Anda tidak perlu menambahkan pengendali peristiwa utama kustom (onKeyEvent atau onPreviewKeyEvent) untuk mengizinkan pengguna keluar dari kolom teks. Pengguna dapat selalu keluar menggunakan Shift+Tab atau dengan melewati batas teks menggunakan tombol arah.

KeyboardOptions dapat digunakan untuk memberikan tindakan keyboard virtual yang intuitif yang berkoordinasi dengan navigasi keyboard hardware. ImeAction.Next memindahkan fokus ke target fokus berikutnya, misalnya.

Traversal fokus satu dimensi

Dalam traversal fokus satu dimensi, perilaku tombol Tab bergantung pada lineLimits yang dikonfigurasi di kolom teks:

  • Kolom teks satu baris (TextFieldLineLimits.SingleLine) Menekan tombol Tab akan memindahkan fokus ke target fokus berikutnya di UI.
  • Kolom teks multibaris (TextFieldLineLimits.MultiLine() atau default): Menekan tombol Tab akan menyisipkan karakter tab (\t) ke dalam buffer teks, bukan memindahkan fokus.
  • Navigasi terbalik (Shift+Tab): Menekan Shift+Tab akan memindahkan fokus ke belakang tanpa syarat ke target fokus sebelumnya di kolom teks satu baris dan multi-baris.

// Single-line text field: Tab advances focus to the next focus target
BasicTextField(
    state = singleLineState,
    lineLimits = TextFieldLineLimits.SingleLine,
    modifier = Modifier.fillMaxWidth()
)

// Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target
BasicTextField(
    state = multiLineState,
    lineLimits = TextFieldLineLimits.MultiLine(),
    modifier = Modifier.fillMaxWidth()
)

Traversal fokus dua dimensi

Saat menggunakan tombol panah (atau D-pad), tombol arah pertama-tama memindahkan kursor teks (caret) dalam kolom teks:

  • Navigasi vertikal (atas / bawah): Menekan tombol Down akan memindahkan kursor ke bawah baris demi baris. Saat tanda sisipan mencapai baris terakhir, menekan tombol Bawah lagi akan memindahkan fokus ke target fokus yang berdekatan di bawah kolom teks. Menekan tombol Atas pada baris pertama akan memindahkan fokus ke target fokus sebelumnya.
  • Navigasi horizontal (kiri / kanan / mulai / akhir): Menekan tombol panah horizontal akan memindahkan tanda sisipan melalui karakter. Saat tanda sisipan mencapai awal atau akhir buffer teks, menekan tombol arah lagi akan memindahkan fokus ke target fokus yang berdekatan ke arah tersebut.

Kolom teks di Android TV

Di Android TV, menggunakan pengontrol D-pad tanpa keyboard fisik:

  1. Memindahkan fokus ke kolom teks akan otomatis menampilkan keyboard virtual.
  2. Pengguna menavigasi tombol keyboard virtual menggunakan D-pad.
  3. Menekan tombol Kembali akan menutup keyboard virtual sambil mempertahankan fokus pada kolom teks.
  4. Setelah keyboard virtual ditutup, menekan tombol arah D-pad akan memindahkan fokus ke target fokus di sekitarnya di layar.
  5. Menekan tombol Kembali untuk kedua kalinya akan memicu navigasi kembali sistem standar.