Radio Button
Bir radyo düğmesi: seçili ya da seçili olmayan bir halka ve o halkanın etiketi. Biri seçilen birkaç seçenekten biridir.
import com.pantrixui.components.elements.radiobutton.PantrixRadioButton
- Seçenekler. Bir seçenek bir
RadioOption'dır: değeri, etiketi, etiketin altında ne olduğunu söyleyen metni, seçilebilir olup olmadığı ve otomasyon anahtarı. - Alt alta ya da yan yana.
orientationseçenekleri alt alta (Orientation.Vertical, varsayılan) ya da yan yana dizer (Orientation.Horizontal): satıra sığdığı kadarı yan yana durur, kalanı alt satıra geçer. - Tek hedef. Halka, etiket ve altındaki metin tek bir hedeftir: yazıya basmak da seçer. Halka ne kadar küçük olursa olsun satır, platformun dokunma hedefi kadar yer tutar.
- Hata.
errorhalkaları ve grubun altındaki metni temanındangerrolüne çevirir; hatayı ekran okuyucuya grup, bir kez söyler. - Form.
fieldalanPantrixRadioGroupseçimini, hatasını ve adını formun alanından alır. Yapılması zorunlu bir seçim, null ile başlayan bir alan veRules.requiredile kurulur. - Devre dışı ve salt okunur.
RadioOption(enabled = false)tek bir seçeneği, grubunenabled = false'u hepsini kapatır.onClick'i null olanPantrixRadioButtonsalt okunurdur: basış ve odak almaz, seçili olduğunu söyler. - Kendi renkleri ve stil.
RadioColorsseçili ve seçili olmayan halkanın rengini,RadioStylehalkanın ve içindeki noktanın boyunu ve çizgi kalınlığını verir. Halka 20dp, noktası 10dp'dir; iOS'ta 22dp ve 12dp. - Halka sonda.
controlPosition = ControlPosition.Endhalkayı etiketin sonuna koyar; alt alta bir grupta seçenekler grubun genişliğini alır ve halkalar bir sütunda durur. - Hareket. Seçilen halkanın noktası büyür ve halka onunla birlikte
primaryrengine döner. Hareketin azaltıldığı temada ikisi de bir anda olur.
Örnekler
Devre dışı ve salt okunur
Grubun enabled = false'u her seçeneği kapatır; etiket ve yardım metni de devre dışı yazı rengiyle yazılır. Hangi seçeneğin seçili olduğu yine görünür.
onClick = null verilen PantrixRadioButton salt okunurdur: basış ve odak almaz, renkleri değişmez, adını ve seçili olduğunu yine söyler.
PantrixRadioGroup(
options = listOf(
RadioOption("card", "Kart", tagKey = "card"),
RadioOption("transfer", "Havale", tagKey = "transfer")
),
selected = "card",
onSelect = {},
orientation = Orientation.Horizontal,
enabled = false,
label = "Ödeme",
supportingText = "Devre dışı: kayıtlı kartınızla ödenecek",
tagKey = "payment"
)
PantrixRadioButton(
selected = true,
onClick = null,
label = "Salt okunur",
supportingText = "Basılmaz; yalnızca neyin seçildiğini gösterir",
tagKey = "read_only"
)
Tek başına: kartların içinde
PantrixRadioButton tek başına, grubun kuramayacağı bir düzen içindir: burada her seçenek bir kartın içindedir. Seçimi çağıran tutar: her düğme seçili olup olmadığını selected ile alır, basılınca onClick ile sorar.
Düğmeler Modifier.selectableGroup() taşıyan bir sütunun içindedir: ekran okuyucu onları tek bir seçim olarak duyar. Ok tuşlarıyla gezmek grubun işidir, burada yoktur: her düğme Tab için ayrı bir duraktır.
var plan by rememberSaveable { mutableStateOf("monthly") }
Column(
modifier = Modifier.widthIn(max = 360.dp).selectableGroup(),
verticalArrangement = Arrangement.spacedBy(PantrixTheme.spacing.sm)
) {
PantrixCard(modifier = Modifier.fillMaxWidth(), variant = CardVariant.Outlined) {
PantrixRadioButton(
selected = plan == "monthly",
onClick = { plan = "monthly" },
modifier = Modifier.fillMaxWidth(),
label = "Aylık",
supportingText = "Her ay yenilenir; istediğiniz zaman bırakabilirsiniz",
tagKey = "plan_monthly"
)
}
PantrixCard(modifier = Modifier.fillMaxWidth(), variant = CardVariant.Outlined) {
PantrixRadioButton(
selected = plan == "yearly",
onClick = { plan = "yearly" },
modifier = Modifier.fillMaxWidth(),
label = "Yıllık",
supportingText = "Yılda bir kez ödenir",
tagKey = "plan_yearly"
)
}
}
API
selected
Bir radyo düğmesi: seçili ya da seçili olmayan bir halka ve o halkanın etiketi. Biri seçilen birkaç seçenekten biridir.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
selected | Boolean | Bu seçeneğin seçili olup olmadığı. | |
onClick | (() -> Unit)? | Kullanıcı radyo düğmesine basınca çağrılır, düğme zaten seçili olsa da olmasa da. Radyo düğmesi kendiliğinden bir şey değiştirmez: selected ne diyorsa odur. Null verilirse salt okunur olur. | |
modifier | Modifier | Modifier | Satırın modifier'ı. |
enabled | Boolean | true | Radyo düğmesinin seçilip seçilemeyeceği. Seçilemeyen düğme devre dışı renklerle çizilir ve devre dışı olduğunu söyler. |
label | String? | null | Halkanın yanındaki metin: hedefin parçasıdır ve ekran okuyucu için radyo düğmesinin 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 | Seçimin yanlış ya da eksik olup olmadığı: halka ve yardım metni danger rolüne döner, ekran okuyucuya girdinin geçersiz olduğu söylenir. |
style | RadioStyle? | 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 | RadioColors? | null | Bu radyo düğmesinin kendi renkleri: verdiği renkler kullanılır, gerisi temanınkilerdir. Devre dışı bir halka ve hatalı bir halka temanın renklerinde kalır. |
contentDescription | String? | null | Ekran okuyucunun radyo düğmesi için söylediği söz: label yoksa düğmenin adıdır, seçeneğin kendisi olan bir kartta olduğu gibi. label varsa onun yerine söylenir. |
tagKey | String? | null | Radyo düğmesinin otomasyon anahtarı: satır RadioButton_<tagKey>'dir. Bir basış RadioButton olayı olarak bildirilir, etiketiyle hiçbir zaman bildirilmez. |
interactionSource | MutableInteractionSource? | null | Radyo düğmesinin dışarı taşınan etkileşimleri. Null ise düğme kendi kaynağını tutar. |
controlPosition | ControlPosition | ControlPosition.Start | halkanın durduğu yer: bir seçenek listesindeki gibi etiketin önü ya da arkası. Arkasındaysa halka 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 halkanın bıraktığı yerde sarar. |
RadioStyle
PantrixRadioButton'ın halkası ve içindeki nokta: her birinin boyu ve halkanın kalınlığı.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
size | Dp | Dp.Unspecified | Halkanın genişliği ve yüksekliği, çizgisiyle birlikte. |
dotSize | Dp | Dp.Unspecified | Seçili bir halkanın içindeki noktanın genişliği ve yüksekliği. |
strokeWidth | Dp | Dp.Unspecified | Halkanın çizgisinin kalınlığı. |
RadioColors
Temanın renklerini almayanlar için PantrixRadioButton'ın ve PantrixRadioGroup seçeneklerinin boyandığı renkler: verilen renk kullanılır, verilmeyen temanın rolünde kalır.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
selected | Color | Color.Unspecified | Seçilen seçeneğin halkası ve noktası. Temanın primary rengi. |
unselected | Color | Color.Unspecified | Seçili olmayan bir seçeneğin halkası. Temanın borderStrong rengi: boş bir halka çizgisinden ibarettir. |
Erişilebilirlik
- Klavye. Grup Tab için tek duraktır: odak seçili seçeneğe, hiçbiri seçili değilken seçilebilen ilk seçeneğe gelir. Ok tuşları sonraki ve önceki seçeneği seçer, sondan başa döner ve seçilemeyeni atlar; sağdan sola düzende sol ve sağ yer değiştirir.
- Ekran okuyucu. Her seçenek, seçili olup olmadığını söyleyen bir radyo düğmesidir; grubun adı
label'dır. Tek başına kullanılan düğmelerModifier.selectableGroup()içine alınır ki tek bir seçim olarak duyulsun.