Tri-state Checkbox
Üçüncü bir durumu olan onay kutusu: işaretli, boş ya da ikisinden de biraz.
import com.pantrixui.components.elements.checkbox.PantrixTriStateCheckbox
- Tek hedef. Kutu, etiket ve yardım metni tek bir hedeftir: yazıya basmak da kutuyu değiştirir. Kutu ne kadar küçük olursa olsun satır, platformun dokunma hedefi kadar yer tutar.
- Etiket ve yardım metni.
labelkutunun yanında,supportingTextonun altında daha küçük bir yazıyla durur. Kutu, yazı kaç satır sürerse sürsün, etiketin ilk satırındadır. - Üç durum.
PantrixTriStateCheckboxbirToggleableStatealır: işaretli, boş ya da belirsiz. Belirsiz kutu bir çizgi çizer ve ekran okuyucuya boş diye değil, belirsiz diye okunur. Basışın neye yol açacağını çağıran söyler. - Hata.
errorkutuyu ve yardım metnini temanındangerrolüne çevirir; ekran okuyucuya girdinin geçersiz olduğu söylenir. - Form.
fieldalanPantrixCheckboxdeğerini, hatasını ve adını formun alanından alır. Kuralın mesajı ilk değişiklikten sonra ya da form gönderilmek istendiğinde görünür ve yardım metninin yerine geçer. - Salt okunur ve devre dışı.
onCheckedChangenull ise kutu salt okunurdur: basış ve odak almaz, adını ve durumunu yine söyler.enabled = falsekutuyu devre dışı renklerle çizer. - Kendi renkleri.
CheckboxColorsdolguyu, işareti ve kenarı ayrı ayrı alır; verilmeyen temanın rolünde kalır. Devre dışı ve hatalı kutu, renk verilse de temanın renkleriyle çizilir. - Stil.
CheckboxStylekutunun boyunu, köşelerini ve çizgi kalınlığını değiştirir. Kutu 18dp'dir, iOS'ta 22dp; köşeleri şekil ölçeğinin küçük adımıdır. - Kutu sonda.
controlPosition = ControlPosition.Endkutuyu etiketin sonuna koyar: satıra bir genişlik verilince kutu onun sonunda durur. - Hareket. İşaret çizilerek gelir ve gider, dolgu onunla birlikte belirir ve solar. Hareketin azaltıldığı temada ikisi de bir anda olur.
Örnekler
Üç durum: tümünü seç
PantrixTriStateCheckbox üçüncü bir durumu çizer. Altındaki kutuların bir kısmı seçiliyken "Tüm bildirimler" ne işaretli ne boştur: bir çizgi gösterir ve ekran okuyucuya öyle okunur.
Durumu kutu değil, çağıran hesaplar: hepsi seçiliyse On, hiçbiri seçili değilse Off, arada Indeterminate. onClick yalnızca basıldığını bildirir; burada hepsini seçer, hepsi seçiliyken hepsini bırakır.
val notifications = listOf("Kargo durumu", "Kampanyalar", "Hesap güvenliği")
var chosen by remember { mutableStateOf(setOf(notifications.first())) }
val all = when (chosen.size) {
0 -> ToggleableState.Off
notifications.size -> ToggleableState.On
else -> ToggleableState.Indeterminate
}
Column(verticalArrangement = Arrangement.spacedBy(PantrixTheme.spacing.xs)) {
PantrixTriStateCheckbox(
state = all,
onClick = { chosen = if (all == ToggleableState.On) emptySet() else notifications.toSet() },
label = "Tüm bildirimler",
tagKey = "all_notifications"
)
Column(modifier = Modifier.padding(start = PantrixTheme.spacing.xl)) {
notifications.forEachIndexed { index, name ->
PantrixCheckbox(
checked = name in chosen,
onCheckedChange = { on -> chosen = if (on) chosen + name else chosen - name },
label = name,
tagKey = "notification_$index"
)
}
}
}
API
state
Üçüncü bir durumu olan onay kutusu: işaretli, boş ya da ikisinden de biraz.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
state | ToggleableState | İşaretli, boş ya da belirsiz. | |
onClick | (() -> Unit)? | Kullanıcı onay kutusuna basınca çağrılır. Null onu salt okunur yapar. | |
modifier | Modifier | Modifier | Satırın modifier'ı. |
enabled | Boolean | true | Onay kutusuna basılıp basılamadığı. Basılamayan kutu devre dışı renklerle çizilir ve devre dışı olduğunu söyler. |
label | String? | null | Kutunun yanındaki yazı: hedefin bir parçasıdır ve ekran okuyucu için onay kutusunun adıdır. |
supportingText | String? | null | Etiketin altında, daha küçük bir yazıyla duran yardım. error true iken mesajın kendisidir. |
error | Boolean | false | Değerin yanlış olup olmadığı. Yanlışsa kutu ve yardım metni danger rolüne döner, ekran okuyucuya girdinin geçersiz olduğu söylenir. |
style | CheckboxStyle? | null | Bu çağrının kendi stili: çevresindeki her stili ezer, yoğunluk ona da uygulanır. Yalnızca verdiği alanlar değişir ve her platformda değişir. |
colors | CheckboxColors? | null | Bu onay kutusunun kendi renkleri. Verdiği renkler kullanılır, gerisi temadan gelir. Devre dışı kutu ve hatalı kutu temanın renklerinde kalır. |
contentDescription | String? | null | Ekran okuyucunun, label verilmeyen onay kutusu için ya da etiketin yerine söylediği. |
tagKey | String? | null | Onay kutusunun otomasyon anahtarı: satır Checkbox_<tagKey> etiketini taşır. |
interactionSource | MutableInteractionSource? | null | Onay kutusunun dışarı taşınan etkileşimleri. Null verilirse kutu kendi kaynağını tutar. |
controlPosition | ControlPosition | ControlPosition.Start | kutunun durduğu yer: bir seçenek listesindeki gibi etiketin önü ya da arkası. Arkasındaysa kutu satıra verilen genişliğin sonunda durur, Modifier.fillMaxWidth() onu ötekilerle hizalar; satıra genişlik verilmemişse etiketin hemen ardındadır. Etiket kutunun bıraktığı yerde sarar. |
CheckboxStyle
PantrixCheckbox'un kutusu: boyu, köşeleri ve kenarı.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
size | Dp | Dp.Unspecified | Kutunun genişliği ve yüksekliği, kenarıyla birlikte. |
shape | ShapeSpec | ShapeSpec.Unspecified | Kutunun köşeleri: markanın şekil ölçeğinin bir adımı. Böylece köşeleri keskin olan bir markanın kutuları da keskin köşeli olur. |
strokeWidth | Dp | Dp.Unspecified | Kutunun kenarının kalınlığı. İşaret ve çizgi de bu kalınlıkta çizilir. |
CheckboxColors
Temanın renklerini almayan bir onay kutusu için PantrixCheckbox'un boyandığı renkler: verilen renk kullanılır, verilmeyen temanın rolünde kalır. Bir ürün yalnızca değiştirdiği renkleri verir:
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
checked | Color | Color.Unspecified | İşaretli ya da belirsiz kutunun dolgusu. Temanın primary rengi. |
checkmark | Color | Color.Unspecified | Dolgunun üstündeki işaret ve çizgi: checked'in üstünde okunan renk. Primary rolünün onColor'ı. |
border | Color | Color.Unspecified | İşaretli olmayan kutunun kenarı. Temanın borderStrong rengi: boş bir kutu kenarından ibarettir. |
Erişilebilirlik
- Ekran okuyucu. Tek bir onay kutusu okunur: adı etiketidir, durumu temanın diliyle söylenir. Etiketi olmayan kutunun adını
contentDescriptionverir.