Kullanıcıların yan yana gösterilen seçenekler arasından seçim yapmasına olanak tanımak için segmentlere ayrılmış düğme kullanın. İki tür segmentlere ayrılmış düğme vardır:
- Tek seçim düğmesi: Kullanıcıların bir seçenek belirlemesine olanak tanır.
- Çoklu seçim düğmesi: Kullanıcıların iki ila beş öğe arasında seçim yapmasına olanak tanır. Daha karmaşık seçimler veya beşten fazla öğe için çipler kullanın.
API yüzeyi
Segmentlere ayrılmış düğmeler oluşturmak için SingleChoiceSegmentedButtonRow ve MultiChoiceSegmentedButtonRow düzenlerini kullanın. Bu düzenler, SegmentedButtons öğelerini doğru şekilde konumlandırıp boyutlandırır ve aşağıdaki temel parametreleri paylaşır:
space: Düğmeler arasındaki çakışmayı ayarlar.content: Parçalı düğme satırının içeriğini barındırır. Bu içerik genellikle birSegmentedButtondizisidir.
Tek seçimli segmentlere ayrılmış düğme oluşturma
Bu örnekte, tek seçimli segmentlere ayrılmış düğmenin nasıl oluşturulacağı gösterilmektedir:
@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) } ) } } }
Kodla ilgili önemli noktalar
- Seçilen düğme dizinini izlemek için
remembervemutableIntStateOfkullanarak birselectedIndexdeğişkeni başlatır. - Düğme etiketlerini temsil eden bir
optionslistesi tanımlar. SingleChoiceSegmentedButtonRowyalnızca bir düğme seçmenize olanak tanır.forEachIndexeddöngüsünün içinde her seçenek için birSegmentedButtonoluşturur:shape,SegmentedButtonDefaults.itemShapekullanarak düğmenin şeklini dizinine ve toplam seçenek sayısına göre tanımlar.onClick, tıklanan düğmenin diziniyleselectedIndexdeğerini günceller.selected, düğmenin seçim durumunuselectedIndexdeğerine göre ayarlar.label,Textcomposable'ını kullanarak düğme etiketini gösterir.
Sonuç
Çoklu seçim segmentli düğmesi oluşturma
Bu örnekte, kullanıcıların birden fazla seçenek belirlemesine olanak tanıyan simgeler içeren çoktan seçmeli bir segmentlere ayrılmış düğmenin nasıl oluşturulacağı gösterilmektedir:
@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( painter = rememberVectorPainter(AppIcons.DirectionsWalk), contentDescription = "Directions Walk" ) "Ride" -> Icon( painter = rememberVectorPainter(AppIcons.DirectionsBus), contentDescription = "Directions Bus" ) "Drive" -> Icon( painter = rememberVectorPainter(AppIcons.DirectionsCar), contentDescription = "Directions Car" ) } } ) } } }
Kodla ilgili önemli noktalar
- Kod,
remembervemutableStateListOfkullanarakselectedOptionsdeğişkenini başlatır. Bu, her düğmenin seçili durumunu izler. - Kod, düğmeleri içermek için
MultiChoiceSegmentedButtonRowkullanır. forEachIndexeddöngüsünde kod, her seçenek için birSegmentedButtonoluşturur:shape, düğmenin şeklini dizinine ve toplam seçenek sayısına göre tanımlar.checked, düğmenin işaretli durumunuselectedOptionsiçindeki ilgili değere göre ayarlar.- Düğme tıklandığında
onCheckedChange,selectedOptionsiçindeki ilgili öğenin seçili durumunu değiştirir. icon,SegmentedButtonDefaults.Iconve düğmenin işaretli durumuna göre bir simge gösterir.label, uygun resim vektörleri ve içerik açıklamaları içerenIconcomposable'larını kullanarak etikete karşılık gelen bir simge gösterir.
Sonuç
Ek kaynaklar
- Material 3: Segmentlere ayrılmış düğmeler