Meminta fokus secara terprogram

Dalam beberapa alur pengguna, aplikasi Anda perlu memindahkan fokus secara eksplisit ke komponen tertentu. Misalnya, saat pengguna mengklik tombol "Telusuri", Anda mungkin ingin menempatkan fokus secara otomatis ke kolom input penelusuran.

Menggunakan FocusRequester

Untuk meminta fokus secara eksplisit:

  1. Buat dan ingat instance FocusRequester: val focusRequester = remember { FocusRequester() }.
  2. Lampirkan FocusRequester ke composable target menggunakan pengubah focusRequester.
  3. Panggil requestFocus() dalam callback peristiwa (seperti onClick) atau cakupan coroutine.

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

val focusRequester = remember { FocusRequester() }
var text by remember { mutableStateOf("") }

TextField(
    value = text,
    onValueChange = { text = it },
    modifier = Modifier.focusRequester(focusRequester)
)

Button(onClick = { focusRequester.requestFocus() }) {
    Text("Request focus on TextField")
}

Menetapkan fokus layar awal

Untuk menempatkan fokus awal pada komponen tertentu saat layar pertama kali muncul, pemicu requestFocus() di dalam LaunchedEffect(Unit):

LaunchedEffect(Unit) {
    focusRequester.requestFocus()
}

Saat berpindah antar-penampung atau kembali dari layar lain, Anda juga dapat melampirkan focusRestorer() ke penampung induk untuk otomatis mengembalikan fokus ke turunan yang terakhir difokuskan. Untuk mengetahui informasi selengkapnya, lihat panduan Memulihkan fokus.