FocusManager به شما امکان میدهد فوکوس را به صورت جهتدار حرکت دهید یا آن را به طور کامل پاک کنید. FocusRequester برای هدفگیری مستقیم کامپوننت استفاده کنید ( به درخواست فوکوس از طریق برنامهنویسی مراجعه کنید).
حرکت فوکوس جهتدار با FocusManager
برای جابجایی فوکوس به صورت برنامهنویسی شده در یک جهت نسبی:
- با استفاده از
LocalFocusManager.currentنمونهFocusManagerرا دریافت کنید. - تابع
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: بدون قید و شرط، حتی اگر یک کامپوننت فوکوس را گرفته باشد، فوکوس را پاک میکند.
برای شما توصیه میشود
- توجه: متن لینک زمانی نمایش داده میشود که جاوا اسکریپت غیرفعال باشد.
- اهداف تمرکز
- ترتیب پیمایش فوکوس
- درخواست تمرکز به صورت برنامهنویسیشده