در Jetpack Compose Glimmer، یک ToggleButton یک کامپوننت تعاملی است که ظاهر خود را بر اساس حالت تیک خورده تغییر میدهد. دکمههای Toggle برای عینکهای نمایش بهینه شدهاند تا انتقالهای بصری واضحی را در شکل و رنگ ارائه دهند. این انتقالها نشان میدهند که چه زمانی یک عمل یا تنظیم فعال است.
از دکمههای جابجایی برای نمایش عملکردهایی که میتوانند روشن یا خاموش شوند استفاده کنید. برخلاف دکمههای جابجایی که فقط آیکون دارند، یک دکمه جابجایی در درجه اول محتوای متنی را نمایش میدهد، اگرچه از جایگاههای آیکون اختیاری برای متن اضافی نیز پشتیبانی میکند.
برای موارد استفاده دیگر، دکمههای استاندارد و دکمههای آیکون نیز وجود دارد.

آناتومی
یک دکمهی تغییر وضعیت شامل یک ظرف است که بین حالتها تغییر شکل میدهد و یک برچسب با آیکونهای اختیاری.
| قسمت | توضیحات |
|---|---|
کانتینر | بین یک شکل دایرهای (بدون علامت) و یک مستطیل گوشه گرد (علامتدار) انیمیشن ایجاد میکند. |
برچسب | معمولاً یک |
آیکونها (اختیاری) | اسلاتهای پیشرو یا دنبالهرو که میتوانند بر اساس ایالت متفاوت باشند. |
اندازهها
مانند دکمههای استاندارد ، دکمههای جابجایی از دو نوع اندازه پشتیبانی میکنند:
| اندازه | حداقل ارتفاع | استفاده پیشفرض |
|---|---|---|
متوسط | ۴۸.dp | اندازه تعاملی پیشفرض. |
بزرگ | ۷۲.dp | دکمههای اصلی یا با تأکید بالا. |
تغییر تنظیمات پیشفرض دکمهها
به طور پیشفرض، دکمههای تغییر وضعیت ToggleButtonDefaults.animateShape استفاده میکنند. این کار یک انتقال روان بین حالتهای زیر ایجاد میکند:
- علامت نخورده :
GlimmerTheme.shapes.large(معمولاً یکCircleShape). - علامت زده شده :
ToggleButtonDefaults.CheckedShape(یکRoundedCornerShapeبا گوشههای20.dp).
کلاس ToggleButtonColors وضوح رنگ را برای حالتهای زیر مدیریت میکند:
- علامت نخورده : پیشفرض روی
GlimmerTheme.colors.surfaceاست. - علامت زده شده : پیشفرض روی
GlimmerTheme.colors.surfaceاست.
انیمیشن
دکمههای تغییر وضعیت از پیشفرضهای زیر برای انیمیشن استفاده میکنند:
-
animateShape:Shapeرا ارائه میدهد که اندازه گوشهها را با استفاده از مشخصات انیمیشن فنر (stiffness = 600f) درونیابی میکند. -
colors: یک تابع factory برای سفارشیسازی رنگهای پسزمینه و محتوا برای هر دو حالت. -
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) } val text = if (checked) "Toggle on" else "Toggle off" ToggleButton( checked = checked, leadingIcon = { Icon(if (checked) FavoriteIcon else OutlinedFavoriteIcon, "Localized description") }, onCheckedChange = { checked = it }, ) { Text(text) } }