Kullanıcıların bir dizi seçenek arasından yan yana seçim yapmasına izin vermek için segmentli bir düğme kullanın. İki tür segmentli düğme vardır:
- Tek seçim düğmesi: Kullanıcıların tek 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 çipleri kullanın.
API yüzeyi
Segmentlere ayrılmış düğmeler oluşturmak için SingleChoiceSegmentedButtonRow
ve MultiChoiceSegmentedButtonRow
düzenlerini kullanın. Bu düzenler, SegmentedButton
'ların doğru şekilde konumlandırılmasını ve boyutlandırılmasını sağlar ve aşağıdaki temel parametreleri paylaşır:
space
: Düğmeler arasındaki örtüşmeyi ayarlar.content
: Segmentlere ayrılmış düğme satırının içeriğini içerir. Bu içerik genellikleSegmentedButton
'lardan oluşan bir sıradır.
Tek seçimli segmentli düğme oluşturma
Bu örnekte, tek seçimli segmentli bir 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
- Geçerli olarak seçili düğme dizesini izlemek için
remember
vemutableIntStateOf
kullanarak birselectedIndex
değişkeni başlatır. - Düğme etiketlerini temsil eden
options
öğelerinin listesini tanımlar. SingleChoiceSegmentedButtonRow
, yalnızca bir düğmenin seçilmesini sağlar.forEachIndexed
döngüsü içinde her seçenek için birSegmentedButton
oluşturur:shape
,SegmentedButtonDefaults.itemShape
kullanarak düğmenin şeklini dizine ve seçeneklerin toplam sayısına göre tanımlar.onClick
, tıklanan düğmenin dizini ileselectedIndex
değerini günceller.selected
, düğmenin seçim durumunuselectedIndex
'a göre ayarlar.label
,Text
bileşenini kullanarak düğme etiketini gösterir.
Sonuç
Çoklu seçim segmentli düğme oluşturma
Bu örnekte, kullanıcıların birden fazla seçenek belirlemesine olanak tanıyan simgelerle çoklu seçim segmentli 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( 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" ) } } ) } } }
Kodla ilgili önemli noktalar
- Kod,
selectedOptions
değişkeniniremember
vemutableStateListOf
kullanarak başlatır. Bu, her düğmenin seçili durumunu izler. - Kodda, düğmeleri içeren
MultiChoiceSegmentedButtonRow
kullanılır. forEachIndexed
döngüsü içinde kod, her seçenek için birSegmentedButton
oluşturur:shape
, düğmenin şeklini dizine ve toplam seçenek sayısına göre tanımlar.checked
,selectedOptions
içindeki ilgili değere göre düğmenin işaretli durumunu ayarlar.onCheckedChange
, düğme tıklandığındaselectedOptions
içindeki ilgili öğenin seçili durumunu değiştirir.icon
,SegmentedButtonDefaults.Icon
'a ve düğmenin işaretli durumuna göre bir simge gösterir.label
, uygun resim vektörleri ve içerik açıklamaları içerenIcon
composable'ları kullanarak etikete karşılık gelen bir simge gösterir.
Sonuç
Ek kaynaklar
- 3. Malzeme: Segmentlere ayrılmış düğmeler