सेगमेंट वाले बटन का इस्तेमाल करके, उपयोगकर्ताओं को एक साथ कई विकल्पों में से चुनने की सुविधा दें. सेगमेंट वाले बटन दो तरह के होते हैं:
- सिंगल-सिलेक्ट बटन: इससे उपयोगकर्ता एक विकल्प चुन सकते हैं.
- एक से ज़्यादा आइटम चुनने का बटन: इसकी मदद से, उपयोगकर्ता दो से पांच आइटम चुन सकते हैं. ज़्यादा जटिल विकल्पों या पांच से ज़्यादा आइटम के लिए, चिप का इस्तेमाल करें.
एपीआई का प्लैटफ़ॉर्म
सेगमेंट वाले बटन बनाने के लिए, SingleChoiceSegmentedButtonRow
और
MultiChoiceSegmentedButtonRow
लेआउट का इस्तेमाल करें. इन लेआउट से यह पक्का होता है कि SegmentedButton
की पोज़िशन और साइज़ सही हो. साथ ही, ये ये मुख्य पैरामीटर शेयर करते हैं:
space
: बटनों के बीच ओवरलैप को अडजस्ट करता है.content
: इसमें सेगमेंट वाली बटन लाइन का कॉन्टेंट होता है. आम तौर पर, यहSegmentedButton
का क्रम होता है.
सिंगल-सिलेक्ट सेगमेंट वाला बटन बनाना
इस उदाहरण में, सिंगल-सिलेक्ट सेगमेंट वाला बटन बनाने का तरीका बताया गया है:
@Composable fun SingleChoiceSegmentedButton(modifier: Modifier = Modifier) { var selectedIndex by remember { mutableIntStateOf(0) } val options = listOf("Day", "Month", "Week") SingleChoiceSegmentedButtonRow { options.forEachIndexed { index, label -> SegmentedButton( shape = SegmentedButtonDefaults.itemShape( index = index, count = options.size ), onClick = { selectedIndex = index }, selected = index == selectedIndex, label = { Text(label) } ) } } }
कोड के बारे में अहम जानकारी
- फ़िलहाल चुने गए बटन इंडेक्स को ट्रैक करने के लिए,
remember
औरmutableIntStateOf
का इस्तेमाल करकेselectedIndex
वैरिएबल को शुरू करता है. - बटन लेबल दिखाने वाले
options
की सूची तय करता है. SingleChoiceSegmentedButtonRow
से यह पक्का होता है कि सिर्फ़ एक बटन चुना जा सकता है.forEachIndexed
लूप में, हर विकल्प के लिए एकSegmentedButton
बनाता है:shape
, बटन के इंडेक्स औरSegmentedButtonDefaults.itemShape
का इस्तेमाल करके विकल्पों की कुल संख्या के आधार पर, बटन का आकार तय करता है.onClick
, क्लिक किए गए बटन के इंडेक्स के साथselectedIndex
को अपडेट करता है.selected
,selectedIndex
के आधार पर बटन की चुनी गई स्थिति सेट करता है.label
,Text
कंपोज़ेबल का इस्तेमाल करके बटन का लेबल दिखाता है.
नतीजा
एक से ज़्यादा विकल्प चुनने वाला सेगमेंट वाला बटन बनाना
इस उदाहरण में, आइकॉन के साथ एक से ज़्यादा विकल्प वाला सेगमेंट वाला बटन बनाने का तरीका बताया गया है. इससे उपयोगकर्ता एक से ज़्यादा विकल्प चुन सकते हैं:
@Composable fun MultiChoiceSegmentedButton(modifier: Modifier = Modifier) { val selectedOptions = remember { mutableStateListOf(false, false, false) } val options = listOf("Walk", "Ride", "Drive") MultiChoiceSegmentedButtonRow { options.forEachIndexed { index, label -> SegmentedButton( shape = SegmentedButtonDefaults.itemShape( index = index, count = options.size ), checked = selectedOptions[index], onCheckedChange = { selectedOptions[index] = !selectedOptions[index] }, icon = { SegmentedButtonDefaults.Icon(selectedOptions[index]) }, label = { when (label) { "Walk" -> Icon( imageVector = Icons.AutoMirrored.Filled.DirectionsWalk, contentDescription = "Directions Walk" ) "Ride" -> Icon( imageVector = Icons.Default.DirectionsBus, contentDescription = "Directions Bus" ) "Drive" -> Icon( imageVector = Icons.Default.DirectionsCar, contentDescription = "Directions Car" ) } } ) } } }
कोड के बारे में अहम जानकारी
- कोड,
remember
औरmutableStateListOf
का इस्तेमाल करकेselectedOptions
वैरिएबल को शुरू करता है. यह हर बटन की चुनी गई स्थिति को ट्रैक करता है. - बटन शामिल करने के लिए, कोड में
MultiChoiceSegmentedButtonRow
का इस्तेमाल किया जाता है. forEachIndexed
लूप में, कोड हर विकल्प के लिए एकSegmentedButton
बनाता है:shape
, इंडेक्स और विकल्पों की कुल संख्या के आधार पर बटन का आकार तय करता है.checked
,selectedOptions
में मौजूद वैल्यू के आधार पर बटन की चुने जाने की स्थिति सेट करता है.- बटन पर क्लिक करने पर,
onCheckedChange
selectedOptions
में मौजूद उस आइटम की चुनी गई स्थिति को टॉगल करता है. icon
,SegmentedButtonDefaults.Icon
और बटन की चुने जाने की स्थिति के आधार पर आइकॉन दिखाता है.label
, लेबल से जुड़ा आइकॉन दिखाता है. इसके लिए,Icon
कंपोज़ेबल का इस्तेमाल किया जाता है. इन कंपोज़ेबल में सही इमेज वेक्टर और कॉन्टेंट के ब्यौरे होते हैं.
नतीजा
अन्य संसाधन
- तीसरा कॉन्टेंट: सेगमेंट वाले बटन