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

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

Odaklanma

Odağı yakalamak için bir FocusRequester üzerinde captureFocus() yöntemini ç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.

Odağı bırakma

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

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