Переместитесь и сфокусируйтесь.

FocusManager позволяет перемещать фокус в определенном направлении или полностью его сбрасывать. Используйте FocusRequester для прямого обращения к компоненту (см. раздел «Программный запрос фокуса »).

Перемещение направленного фокуса с помощью FocusManager

Для программного перемещения фокуса в относительном направлении:

  1. Получите экземпляр FocusManager , используя LocalFocusManager.current .
  2. Вызовите moveFocus() со значением FocusDirection ( Next , Previous , Up , Down , Left , Right , Enter или Exit ).

val focusManager = LocalFocusManager.current

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

Четкая фокусировка

Чтобы снять фокус с элемента, который в данный момент его удерживает (например, когда пользователь нажимает клавишу Esc ), вызовите clearFocus() :

val focusManager = LocalFocusManager.current

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

Функция clearFocus() принимает необязательный параметр force: Boolean = false :

  • force = false (по умолчанию) : Учитывает блокировки фокуса и не будет сбрасывать фокус, если активный компонент захватил фокус .
  • force = true : Безусловно сбрасывает фокус, даже если компонент уже захватил фокус.
{% verbatim %} {% endverbatim %} {% verbatim %} {% endverbatim %}