Memindahkan dan menghapus fokus

FocusManager memungkinkan Anda memindahkan fokus secara terarah atau menghapusnya sepenuhnya. Gunakan FocusRequester untuk penargetan komponen langsung (lihat Meminta fokus secara terprogram).

Gerakan fokus terarah dengan FocusManager

Untuk memindahkan fokus secara terprogram dalam arah relatif:

  1. Dapatkan instance FocusManager menggunakan LocalFocusManager.current.
  2. Panggil moveFocus() dengan nilai FocusDirection (Next, Previous, Up, Down, Left, Right, Enter, atau Exit).

val focusManager = LocalFocusManager.current

Button(
    onClick = {
        focusManager.moveFocus(FocusDirection.Next)
    }
) {
    Text("Next Field")
}

Fokus yang jelas

Untuk menghapus fokus dari elemen mana pun yang saat ini memegangnya (misalnya, saat pengguna menekan tombol Esc), panggil clearFocus():

val focusManager = LocalFocusManager.current

Box(
    modifier = Modifier.onPreviewKeyEvent { keyEvent ->
        if (keyEvent.key == Key.Escape && keyEvent.type == KeyEventType.KeyUp) {
            focusManager.clearFocus()
            true
        } else {
            false
        }
    }
)

Fungsi clearFocus() menerima parameter force: Boolean = false opsional:

  • force = false (default): Mematuhi penguncian fokus dan tidak akan menghapus fokus jika komponen aktif telah mengambil fokus.
  • force = true: Menghapus fokus tanpa syarat meskipun komponen telah mengambil fokus.