انتقال و پاک کردن تمرکز

FocusManager به شما امکان می‌دهد تمرکز را به‌صورت جهت‌دار حرکت دهید یا آن را به‌طور کامل پاک کنید. از FocusRequester برای هدف‌یابی مستقیم عنصر استفاده کنید (درخواست تمرکز برنامه‌ریزی‌شده را ببینید).

حرکت تمرکز جهتی با FocusManager

برای انتقال تمرکز به‌صورت برنامه‌ریزی‌شده در جهتی نسبی:

  1. نمونه FocusManager را بااستفاده از LocalFocusManager.current دریافت کنید.
  2. با مقدار FocusDirection (Next،‏ Previous، Up،‏ Down،‏ Left،‏ Right،‏ Enter، یا Exit) با moveFocus() تماس بگیرید.

val focusManager = LocalFocusManager.current

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

پاک کردن تمرکز

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