Odağı taşıma ve temizleme

FocusManager, odağı yönlü olarak taşımanıza veya tamamen temizlemenize olanak tanır. Doğrudan bileşen hedefleme için FocusRequester kullanın (bkz. Programatik olarak odak isteme).

FocusManager ile yönlü odak hareketi

Odağı göreceli bir yönde programatik olarak taşımak için:

  1. LocalFocusManager.current kullanarak FocusManager örneğini alın.
  2. moveFocus() işlevini FocusDirection değeriyle (Next, Previous, Up, Down, Left, Right, Enter veya Exit) çağırın.

val focusManager = LocalFocusManager.current

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

Net odak

Odaklanmayı şu anda odaklanılmış olan öğeden kaldırmak için (örneğin, kullanıcı Esc tuşuna bastığında) clearFocus() işlevini çağırın:

val focusManager = LocalFocusManager.current

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

clearFocus() işlevi, isteğe bağlı bir force: Boolean = false parametresini kabul eder:

  • force = false (varsayılan): Odak kilitlerine uyar ve etkin bileşen odağı yakaladıysa odağı temizlemez.
  • force = true: Bir bileşen odağı yakalamış olsa bile odağı koşulsuz olarak temizler.