یک دکمه رادیویی به کاربر این امکان را می دهد که یک گزینه را از میان مجموعه ای از گزینه ها انتخاب کند. زمانی از دکمه رادیویی استفاده می کنید که فقط یک مورد از یک لیست انتخاب شود. اگر کاربران نیاز به انتخاب بیش از یک مورد دارند، به جای آن از یک سوئیچ استفاده کنید.
سطح API
از RadioButton composable برای فهرست کردن گزینه های موجود استفاده کنید. هر گزینه RadioButton و برچسب آن را درون یک جزء Row قرار دهید تا آنها را با هم گروه بندی کنید.
RadioButton شامل پارامترهای کلیدی زیر است:
-
selected: نشان می دهد که آیا دکمه رادیویی انتخاب شده است یا خیر. -
onClick: یک تابع لامبدا که برنامه شما زمانی که کاربر روی دکمه رادیویی کلیک میکند، اجرا میکند. اگرnullباشد، کاربر نمیتواند مستقیماً با دکمه رادیویی تعامل داشته باشد. -
enabled: فعال یا غیرفعال بودن دکمه رادیویی را کنترل می کند. کاربران نمی توانند با دکمه های رادیویی غیرفعال تعامل داشته باشند. -
interactionSource: به شما امکان می دهد وضعیت تعامل دکمه را مشاهده کنید، مثلاً فشار داده شده، شناور یا فوکوس شده باشد.
یک دکمه رادیویی اولیه ایجاد کنید
قطعه کد زیر فهرستی از دکمههای رادیویی را در یک Column ارائه میکند:
@Composable fun RadioButtonSingleSelection(modifier: Modifier = Modifier) { val radioOptions = listOf("Calls", "Missed", "Friends") val (selectedOption, onOptionSelected) = remember { mutableStateOf(radioOptions[0]) } // Note that Modifier.selectableGroup() is essential to ensure correct accessibility behavior Column(modifier.selectableGroup()) { radioOptions.forEach { text -> Row( Modifier .fillMaxWidth() .height(56.dp) .selectable( selected = (text == selectedOption), onClick = { onOptionSelected(text) }, role = Role.RadioButton ) .padding(horizontal = 16.dp), verticalAlignment = Alignment.CenterVertically ) { RadioButton( selected = (text == selectedOption), onClick = null // null recommended for accessibility with screen readers ) Text( text = text, style = MaterialTheme.typography.bodyLarge, modifier = Modifier.padding(start = 16.dp) ) } } } }
نکات کلیدی در مورد کد
-
radioOptionsنشان دهنده برچسب های دکمه های رادیویی است. - تابع
remembercomposable یک متغیر حالتselectedOptionو یک تابع برای به روز رسانی آن حالت به نامonOptionSelectedایجاد می کند. این حالت گزینه دکمه رادیویی انتخاب شده را نگه می دارد.-
mutableStateOf(radioOptions[0])حالت را به اولین مورد در لیست مقداردهی می کند. "تماس ها" اولین مورد است، بنابراین دکمه رادیویی به طور پیش فرض انتخاب شده است.
-
-
Modifier.selectableGroup()رفتار دسترسی مناسب را برای صفحه خوان ها تضمین می کند. به سیستم اطلاع میدهد که عناصر موجود در اینColumnبخشی از یک گروه قابل انتخاب هستند که پشتیبانی مناسب از صفحهخوان را ممکن میسازد. -
Modifier.selectable()باعث میشود کلRowبه عنوان یک آیتم انتخابپذیر عمل کند.-
selectedنشان می دهد که آیاRowفعلی بر اساس حالتselectedOptionانتخاب شده است یا خیر. - تابع
onClicklambda وضعیتselectedOptionرا به گزینه کلیک شده به روز می کند وقتی رویRowکلیک می شود. -
role = Role.RadioButtonبه خدمات دسترسی اطلاع می دهد کهRowبه عنوان یک دکمه رادیویی عمل می کند.
-
-
RadioButton(...)RadioButtonقابل ترکیب را ایجاد می کند.-
onClick = nullدرRadioButtonدسترسی را بهبود می بخشد. این امر از مدیریت مستقیم رویداد کلیک توسط دکمه رادیویی جلوگیری می کند و به اصلاح کنندهselectableRowاجازه می دهد تا وضعیت انتخاب و رفتار دسترسی را مدیریت کند.
-
نتیجه

منابع اضافی
- طراحی متریال: دکمه ها