Odağı yakalayıp serbest bırakın

Özel etkileşim modlarında (ör. yerleştirilmiş çizim tuvali, oyun kumandası yüzeyi veya modal giriş iletişim kutusu) uygulamanızın odağı geçici olarak tek bir bileşene kilitlemesi ve Tab tuşunun veya yön tuşlarının başka bir yere gitmesini engellemesi gerekebilir.

Odak yakalama

Odaklanmak için FocusRequester üzerinde captureFocus() öğesini çağırın:

val focusRequester = remember { FocusRequester() }

Box(
    modifier = Modifier
        .focusRequester(focusRequester)
        .focusable()
        .onFocusChanged { focusState ->
            if (focusState.isFocused) {
                focusRequester.captureFocus()
            }
        }
)

Odak yakalandığında standart odak gezinme tuşları (ör. Sekme) odağı komşu bileşenlere taşımaz.

Yayın odağı

Yakalanan durumdan çıkmak ve kullanıcı arayüzünde normal odak gezinmesini geri yüklemek için freeFocus() işlevini çağırın:

IconButton(
    onClick = {
        focusRequester.freeFocus()
    }
) {
    Icon(Icons.Default.Close, contentDescription = "Exit focus lock")
}