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

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

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

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

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

val focusManager = LocalFocusManager.current

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

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

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