التقاط التركيز وإفلاته

في أوضاع التفاعل المتخصّصة (مثل لوحة رسم مضمّنة أو سطح ذراع التحكّم في الألعاب أو مربّع حوار إدخال مشروط)، قد يحتاج تطبيقك إلى قفل التركيز مؤقتًا على مكوّن واحد ومنع مفتاح Tab أو مفاتيح الاتجاهات من الانتقال بعيدًا.

التقاط التركيز

لجذب التركيز، استخدِم captureFocus() في FocusRequester:

val focusRequester = remember { FocusRequester() }

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

أثناء التقاط التركيز، لا تنقل مفاتيح التنقّل العادية للتركيز (مثل Tab) التركيز إلى المكوّنات المجاورة.

التركيز على الإصدارات

للخروج من حالة الالتقاط واستعادة التنقّل العادي باستخدام التركيز في واجهة المستخدم، يمكنك استدعاء freeFocus():

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