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 (Programatik olarak odaklanma isteğinde bulunma bölümüne bakın).

FocusManager ile yönlü odak hareketi

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

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

val focusManager = LocalFocusManager.current

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

Odağı temizle

Odağı, o anda odaklanılmış olan öğeden kaldırmak için (örneğin, kullanıcı Esc tuşuna bastığında) clearFocus() yöntemini ç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 kilitlerini dikkate alır ve etkin bileşen odağı yakaladıysa odağı temizlemez.
  • force = true: Bir bileşen odağı yakalamış olsa bile odağı koşulsuz olarak temizler.