در Jetpack Compose Glimmer، ToggleButton یک عنصر تعاملی است که ظاهرش را براساس وضعیت علامتگذاریشده تغییر میدهد. دکمههای مبدل برای عینکهای نمایشگر بهینهسازی شدهاند تا گذرهای دیداری واضحی در شکل و رنگ ارائه دهند. این گذارها نشان میدهند که کنش یا تنظیم چه زمانی فعال است.
از دکمههای تغییر وضعیت برای آشکار کردن کنشهایی که میتوانند روشن یا خاموش شوند استفاده کنید. برخلاف تغییر وضعیتهای فقط نماد، دکمه تغییر وضعیت در درجه اول محتوای نوشتاری را نمایش میدهد، اگرچه از جایگاههای نماد اختیاری برای بافت اضافی پشتیبانی میکند.
برای موارد استفاده دیگر، دکمههای استاندارد و دکمههای نماد نیز وجود دارد.
تشریح
دکمه مبدل از یک محفظه تشکیل شده است که بین وضعیتها تغییر میکند و یک برچسب با نمادهای اختیاری دارد.
| بخش | شرح |
|---|---|
ظرف |
بین شکل دایرهای (انتخابنشده) و مستطیل گرد (انتخابشده) پویانمایی میکند. |
برچسب |
معمولاً یک عنصر ترکیبی |
نمادها (اختیاری) |
جایگاههای پیشرو یا دنبالهرو که ممکن است براساس ایالت متفاوت باشند. |
اندازه
مانند دکمههای استاندارد، دکمههای مبدل از دو نوع اندازه پشتیبانی میکنند:
| اندازه | حداقل ارتفاع | کاربرد پیشفرض |
|---|---|---|
متوسط |
۴۸.dp |
اندازه تعاملی پیشفرض. |
بزرگ |
۷۲.dp |
کلیدهای تغییر وضعیت اصلی یا با تأکید زیاد. |
پیشفرضهای دکمه مبدل
بهطور پیشفرض، دکمههای مبدل از ToggleButtonDefaults.animateShape استفاده میکنند. این کار گذاری روان بین وضعیتهای زیر ایجاد میکند:
- بدون علامت:
GlimmerTheme.shapes.large(معمولاًCircleShape). - بررسی شد:
ToggleButtonDefaults.CheckedShape(aRoundedCornerShapeبا20.dpگوشه).
کلاس ToggleButtonColors وضوح رنگ را برای حالتهای زیر مدیریت میکند:
- علامتگذارینشده: پیشفرض روی
GlimmerTheme.colors.surfaceتنظیم میشود. - علامتگذاریشده: بهطور پیشفرض روی
GlimmerTheme.colors.surfaceتنظیم میشود.
پویانمایی
دکمههای مبدل از پیشفرضهای زیر برای پویانمایی استفاده میکنند:
-
animateShape:Shapeرا ارائه میدهد که اندازههای گوشه را بااستفاده از مشخصات پویانمایی فنری (stiffness = 600f) درونیابی میکند. colors: تابع کارخانهای برای سفارشیسازی رنگهای پسزمینه و محتوا برای هر دو حالت.CheckedShape:RoundedCornerShape(20.dp)ایستا که برای حالت علامتگذاریشده استفاده میشود.-
contentPadding: ازButtonDefaults.contentPaddingارث میبرد.
مثال: دکمه مبدل
کد زیر یک دکمه روشن/خاموش ساده ایجاد میکند:
@Composable fun ToggleButtonSample() { var checked by remember { mutableStateOf(false) } val text = if (checked) "Toggle on" else "Toggle off" ToggleButton( checked = checked, onCheckedChange = { checked = it } ) { Text(text) } }
مثال: دکمه مبدل با نماد پیشرو
کد زیر دکمهای با نماد پیشرو ایجاد میکند:
@Composable fun ToggleButtonWithLeadingIconSample() { var checked by remember { mutableStateOf(false) } ToggleButton( checked = checked, leadingIcon = { Icon( if (checked) FavoriteIcon else OutlinedFavoriteIcon, contentDescription = "Toggle favorite" ) }, onCheckedChange = { checked = it } ) { Text(if (checked) "On" else "Off") } }