هر بار که تمرکز در سراسر درخت ترکیب تغییر میکند، Compose رویداد focus
را راهاندازی میکند که اصلاحکنندههای والد و فرزند میتوانند آن را مشاهده کنند. میتوانید از
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: اگر این عنصر ترکیبی یا هریک از عناصر ترکیبی فرزند آن درحالحاضر تمرکز داشته باشد،trueرا برمیگرداند. این برای محتویات والد (مثل کارتها یا نوارابزارها) که باید بدانند چه زمانی هر فرزند درون آنها فعال است مفید است.isCaptured: اگر تمرکز درحالحاضر روی عنصر قفل شده باشد (برای مثال، درطول تعاملات فرعی مُدال بااستفاده ازcaptureFocus())،trueرا برمیگرداند. وقتی تمرکز ضبط میشود، تلاش برای انتقال تمرکز به عناصر دیگر باعث پاک شدن تمرکز نمیشود.
Modifier.onFocusChanged { focusState ->
val isFocused = focusState.isFocused
val hasFocus = focusState.hasFocus
val isCaptured = focusState.isCaptured
}
توصیهشده برای شما
- توجه: نوشتار پیوند وقتی جاوا اسکریپت خاموش است نمایش داده میشود
- هدفهای تمرکز
- نشان دادن وضعیت تمرکز
- درخواست تمرکز برنامهریزیشده
- گرفتن و رها کردن تمرکز