حرکت و فوکوس را پاک کنید

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

حرکت فوکوس جهت‌دار با FocusManager

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

  1. با استفاده از LocalFocusManager.current نمونه FocusManager را دریافت کنید.
  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 : بدون قید و شرط، حتی اگر یک کامپوننت فوکوس را گرفته باشد، فوکوس را پاک می‌کند.
{% کلمه به کلمه %} {% فعل کمکی %} {% کلمه به کلمه %} {% فعل کمکی %}