تمرکز را ضبط و آزاد کنید

در حالت‌های تعامل تخصصی (مثل بوم نقاشی جاسازی‌شده، سطح کنترل‌کننده بازی، یا کادر گفتگوی ورودی مodal)، ممکن است برنامه شما نیاز داشته باشد که به‌طور موقت تمرکز را روی یک مؤلفه قفل کند و از پیمایش کلیدهای 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")
}