هر بار که تمرکز در درخت ترکیببندی تغییر میکند، Compose رویداد تمرکزی را فعال میکند که اصلاحکنندههای والد و فرزند میتوانند آن را مشاهده کنند. میتوانید از اصلاحکننده
onFocusChanged برای گوش دادن به انتقالهای حالت تمرکز، پرسمان ویژگیهای تمرکز
کنونی، و راهاندازی بهروزرسانیهای میانای کاربر مبتنی بر حالت استفاده کنید.
مشاهده وضعیت تمرکز با onFocusChanged
اصلاحکننده onFocusChanged هرگاه عنصری تمرکز را بهدست آورد یا ازدست بدهد، شیء FocusState را ارائه میدهد.
برای مثال، میتوانید تغییرات فوکوس را برای بهروزرسانی وضعیت مؤلفه سفارشی مشاهده کنید (مانند تغییر رنگ حاشیه عنصر یا راهاندازی پویانمایی):
var color by remember { mutableStateOf(Color.White) } Card( modifier = Modifier .onFocusChanged { color = if (it.isFocused) Red else White } .border(5.dp, color) ) {}
در این مثال، remember رنگ حاشیه را در سراسر بازترکیبها ذخیره میکند و
رنگ حاشیه هر زمان که حالت تمرکز عنصر تغییر میکند بهروز میشود.
ویژگیهای FocusState
شیء FocusState که به onFocusChanged ارسال شده است سه ویژگی کلیدی ارائه میدهد:
isFocused: اگر ترکیبپذیر خاصی که این اصلاحکننده به آن متصل است درحالحاضر تمرکز ورودی فعال داشته باشد،trueرا برمیگرداند.hasFocus: اگر این composable یا هرکدام از composableهای فرزند آن درحالحاضر متمرکز شده باشد،trueرا برمیگرداند. این ویژگی برای محفظههای والد (مانند کارتها یا نوارابزارها) که باید بدانند چه زمانی هر فرزند درون آنها فعال است، مفید است.isCaptured: اگر تمرکز درحالحاضر روی عنصر قفل شده باشد،trueرا برمیگرداند (برای مثال، درطول تعاملات فرعی مدال بااستفاده ازcaptureFocus()). درحالیکه ضبط شده است، تلاش برای انتقال تمرکز به عناصر دیگر تمرکز را پاک نمیکند.
Modifier.onFocusChanged { focusState ->
val isFocused = focusState.isFocused
val hasFocus = focusState.hasFocus
val isCaptured = focusState.isCaptured
}
توصیهشده برای شما
- توجه: وقتی جاوا اسکریپت خاموش باشد، نوشتار پیوند نمایش داده میشود
- هدفهای تمرکز
- نشان دادن حالت متمرکز
- درخواست تمرکز بهصورت برنامهنویسیشده
- گرفتن و رها کردن تمرکز