در برخی از جریانهای کاربری، برنامه شما نیاز دارد که به طور صریح تمرکز را به یک جزء خاص منتقل کند. برای مثال، وقتی کاربر روی دکمه "جستجو" کلیک میکند، ممکن است بخواهید به طور خودکار تمرکز را روی فیلد ورودی جستجو قرار دهید.
از FocusRequester استفاده کنید
برای درخواست صریح تمرکز:
- یک نمونه
FocusRequesterایجاد کنید و آن را به خاطر بسپارید:val focusRequester = remember { FocusRequester() }. - با استفاده از اصلاحگر
focusRequesterFocusRequesterبه کامپوننت هدف (target composable) متصل کنید. - تابع
requestFocus()درون یک رویداد فراخوانی (callback) (مانندonClick) یا یک محدودهی کوروتین فراخوانی کنید.
val focusRequester = remember { FocusRequester() } var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.focusRequester(focusRequester) )
val focusRequester = remember { FocusRequester() } var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.focusRequester(focusRequester) ) Button(onClick = { focusRequester.requestFocus() }) { Text("Request focus on TextField") }
تنظیم فوکوس اولیه صفحه نمایش
برای قرار دادن فوکوس اولیه روی یک کامپوننت خاص هنگام نمایش اولیه صفحه، requestFocus() را درون LaunchedEffect(Unit) فعال کنید:
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
هنگام پیمایش بین کانتینرها یا بازگشت از صفحه نمایش دیگر، میتوانید focusRestorer() به کانتینرهای والد نیز متصل کنید تا به طور خودکار فوکوس به آخرین فرزند فوکوس شده بازگردد. برای اطلاعات بیشتر، به راهنمای Restore focus مراجعه کنید.
برای شما توصیه میشود
- توجه: متن لینک زمانی نمایش داده میشود که جاوا اسکریپت غیرفعال باشد.
- اهداف تمرکز
- اهداف تمرکز گروهی
- بازیابی تمرکز
- حرکت و فوکوس را پاک کنید