Skip to main content

Štylizácia komponentov

Komponenty knižnice lze stylovat prostredníctvom update bloku v Jetpack Compose alebo pomocí XML atribútů v layoutu. Oba přístupy lze kombinovat.

SecureTextField (vstupné pole)

Atributy a metody se vztahují na všechny vstupné komponenty typu SecureTextField: SecurePanField, SecureExpiryField, SecureCvvFieldSecureFullNameField.

Metódy štylizácie

MetodaParametrPopis
setHint(hint)StringNastaví placeholder text.
setTextColor(color)IntNastaví farbu textu.
setHintColor(color)IntNastaví farbu placeholder textu.
setTextSize(sp)FloatNastaví velikost textu v sp.
setFontFamily(family)StringNastaví rodinu písma dle názvu.
setTypeface(typeface)TypefaceNastaví písmo pomocí instance Typeface.
setBackgroundColor(color)IntNastaví farbu pozadí.
setBorderColor(color)IntNastaví farbu orámovania v normálním stavu.
setFocusedBorderColor(color)IntNastaví farbu orámovania pri zameraní.
setBorderWidth(widthPx)IntNastaví šírku orámovania v pixeloch.
setBorderWidthDp(widthDp)FloatNastaví šírku orámovania v dp.
setCornerRadius(radiusPx)FloatNastaví zaoblenie rohů v pixeloch.
setCornerRadiusDp(radiusDp)FloatNastaví zaoblenie rohů v dp.
setErrorColor(color)IntNastaví farbu chyby (text i orámovania).
setErrorTextSize(sp)FloatNastaví velikost chybového textu v sp.
setPadding(horizontalPx, verticalPx)Int, IntNastaví vnútorné odsadenie v pixeloch.
setPaddingDp(horizontalDp, verticalDp)Float, FloatNastaví vnútorné odsadenie v dp.
showLabelBooleanZobrazení labelu nad poľom (true/false). Predvolené true.
labelTextString?Vlastní text labelu. Pri null se použije predvolené přeložený label.
setLabelColor(color)IntNastaví farbu labelu.
setLabelTextSize(sp)FloatNastaví velikost labelu v sp.
Informácie

Pre väčšinu prípadov odporúčame používať *Dp varianty setterů (setBorderWidthDp, setCornerRadiusDp, setPaddingDp). Vstupy jsou v dp a knižnica převod na pixely zajistí interně. Parametry těchto metod jsou v API anotované @Dimension(unit = Dimension.DP), takže je zřejmé, jakou jednotku očekávají.

field.setBorderWidthDp(2f)
field.setCornerRadiusDp(12f)

Príklad v Compose (update blok)

SecurePanField(
state = panState,
modifier = Modifier.fillMaxWidth(),
update = {
setBackgroundColor(Color.parseColor("#FAFAFA"))
setBorderColor(Color.parseColor("#1976D2"))
setFocusedBorderColor(Color.parseColor("#0D47A1"))
setBorderWidthDp(2f)
setCornerRadiusDp(12f)
setTextColor(Color.parseColor("#212121"))
setHintColor(Color.parseColor("#9E9E9E"))
setTextSize(16f)
setErrorColor(Color.parseColor("#C62828"))
setPaddingDp(horizontalDp = 14f, verticalDp = 10f)
setFontFamily("sans-serif-medium")
showLabel = true
labelText = null // null = použije se predvolené překlad dle session.translation
setLabelColor(Color.parseColor("#616161"))
setLabelTextSize(12f)
}
)

Ak chcete label skryť:

update = {
showLabel = false
}

XML atribúty

XML atribútFormátPopis
app:secureFieldHintstringPlaceholder text zobrazený v prázdném poli.
app:secureFieldTextColorcolorFarba textu.
app:secureFieldHintColorcolorFarba placeholder textu.
app:secureFieldTextSizedimensionVelikost textu (napr. 18sp).
app:secureFieldFontFamilystringRodina písma (napr. "monospace", "sans-serif-medium").
app:secureFieldBackgroundColorcolorFarba pozadí pole.
app:secureFieldBorderColorcolorFarba orámovania v normálním stavu.
app:secureFieldBorderWidthdimensionŠírka orámovania (napr. 2dp).
app:secureFieldCornerRadiusdimensionZaoblení rohů (napr. 12dp).
app:secureFieldFocusedBorderColorcolorFarba orámovania pri zameraní (focus).
app:secureFieldErrorColorcolorFarba chybového textu a orámovania v chybovom stave.
app:secureFieldErrorTextSizedimensionVelikost chybového textu.
app:secureFieldPaddingHorizontaldimensionHorizontální vnútorné odsadenie.
app:secureFieldPaddingVerticaldimensionVertikální vnútorné odsadenie.
app:secureFieldLabelstringVlastní text labelu nad poľom. Ak není uveden, použije se predvolené přeložený label.
app:secureFieldShowLabelbooleanZobrazení labelu (true/false). Predvolené true.
app:secureFieldLabelColorcolorFarba labelu.
app:secureFieldLabelTextSizedimensionVelikost labelu (napr. 12sp).

Stavy orámovania

Ohraničení pole se automaticky mění podle aktuálního stavu:

StavFarba orámovaniaPriorita
ChybaerrorColorNejvyšší
Zaostrené (focus)focusedBorderColorStřední
NormálnyborderColorNejnižší

Štylizácia viacerých polí naraz

Pomocí rozšiřující funkce lze aplikovat stejný styl na všechna pole přes update blok:

fun SecureTextField.applyCommonStyle() {
setBackgroundColor(Color.parseColor("#FAFAFA"))
setBorderColor(Color.parseColor("#1976D2"))
setFocusedBorderColor(Color.parseColor("#0D47A1"))
setBorderWidthDp(2f)
setCornerRadiusDp(12f)
setTextColor(Color.parseColor("#212121"))
setTextSize(16f)
}

SecurePanField(
state = panState,
modifier = Modifier.fillMaxWidth(),
update = {
applyCommonStyle()
setFontFamily("sans-serif-medium") // specifické pro PAN pole
}
)
SecureExpiryField(
state = expiryState,
modifier = Modifier.fillMaxWidth(),
update = { applyCommonStyle() }
)
SecureCvvField(
state = cvvState,
modifier = Modifier.fillMaxWidth(),
update = {
applyCommonStyle()
setTypeface(Typeface.MONOSPACE) // specifické pro CVV pole
}
)
SecureFullNameField(
state = fullNameState,
modifier = Modifier.fillMaxWidth(),
update = {
applyCommonStyle()
setHint("Jméno a příjmení") // specifické pro jméno plátce
}
)

Použitie android:background

U SecureField lze v XML použít také standardní atribút android:background:

<cz.comgate.sdk.SecurePanField
android:background="#E8F5E9"
... />

Pro čitelnější konfiguraci doporučujeme preferovat atribút app:secureFieldBackgroundColor, který je určen priamo pro stylování pozadí pole.

SecurePayButton (platební tlačidlo)

Metódy štylizácie

MetodaParametrPopis
setText(text)StringNastaví text tlačidla.
setButtonTextColor(color)IntNastaví farbu textu (aktivní stav).
setButtonTextSize(sp)FloatNastaví velikost textu v sp.
setButtonFontFamily(family)StringNastaví rodinu písma.
setButtonTypeface(typeface)TypefaceNastaví písmo pomocí instance Typeface.
setButtonBackgroundColor(color)IntNastaví farbu pozadí (aktivní stav).
setButtonBorderColor(color)IntNastaví farbu orámovania.
setButtonBorderWidth(widthPx)IntNastaví šírku orámovania v pixeloch.
setButtonBorderWidthDp(widthDp)FloatNastaví šírku orámovania v dp.
setButtonCornerRadius(radiusPx)FloatNastaví zaoblenie rohů v pixeloch.
setButtonCornerRadiusDp(radiusDp)FloatNastaví zaoblenie rohů v dp.
setDisabledBackgroundColor(color)IntNastaví farbu pozadí v deaktivovanom stave.
setDisabledTextColor(color)IntNastaví farbu textu v deaktivovanom stave.
setButtonPadding(horizontalPx, verticalPx)Int, IntNastaví vnútorné odsadenie v pixeloch.
setButtonPaddingDp(horizontalDp, verticalDp)Float, FloatNastaví vnútorné odsadenie v dp.
setLoadingAnimationEnabled(enabled)BooleanPovoľuje alebo zakazuje shimmer sweep animaci počas spracovania platby. Predvolené: true.
Informácie

Pre väčšinu prípadov odporúčame používať *Dp varianty setterů (setButtonBorderWidthDp, setButtonCornerRadiusDp, setButtonPaddingDp). Vstupy jsou v dp a knižnica převod na pixely zajistí interně.

Príklad v Compose (update blok)

SecurePayButton(
session = session,
collector = collector,
onPaymentResult = { result -> /* ... */ },
paymentParamsProvider = { /* ... */ },
modifier = Modifier.fillMaxWidth(),
update = {
setText("Zaplatit")
setButtonBackgroundColor(Color.parseColor("#1E88E5"))
setButtonTextColor(Color.WHITE)
setButtonCornerRadiusDp(12f)
setButtonBorderColor(Color.parseColor("#1565C0"))
setButtonBorderWidthDp(1f)
setDisabledBackgroundColor(Color.parseColor("#CFD8DC"))
setDisabledTextColor(Color.parseColor("#78909C"))
setButtonTextSize(16f)
setLoadingAnimationEnabled(true)
}
)

XML atribúty

XML atribútFormátPopis
app:payButtonTextstringText tlačidla (predvolené: "Pay").
app:payButtonTextColorcolorFarba textu v aktívnom stave.
app:payButtonTextSizedimensionVelikost textu.
app:payButtonFontFamilystringRodina písma.
app:payButtonBackgroundColorcolorFarba pozadí v aktívnom stave.
app:payButtonBorderColorcolorFarba orámovania.
app:payButtonBorderWidthdimensionŠírka orámovania.
app:payButtonCornerRadiusdimensionZaoblení rohů.
app:payButtonDisabledBackgroundColorcolorFarba pozadí v deaktivovanom stave.
app:payButtonDisabledTextColorcolorFarba textu v deaktivovanom stave.
app:payButtonPaddingHorizontaldimensionHorizontální vnútorné odsadenie.
app:payButtonPaddingVerticaldimensionVertikální vnútorné odsadenie.
app:payButtonLoadingAnimationbooleanPovoluje/zakazuje shimmer sweep animaci počas spracovania platby. Predvolené: true.

Automatický deaktivované stav

Ak nejsou explicitně nastaveny barvy pro deaktivované stav (payButtonDisabledBackgroundColor, payButtonDisabledTextColor), tlačidlo automaticky vypočítá tlumenou variantu z aktivních barev snížením průhlednosti na 50 %.

Animace počas spracovania platby

Po stisku tlačidla je nad jeho obsahem zobrazena shimmer sweep animace — poloprůhledný třpytivý pruh, který neustále přejíždí zleva doprava přes tlačidlo. Tlačítko přitom zachovává plnou farbu pozadí a původní text — animace nese informaci o probíhajícím spracovania.

Animaci lze vypnout v update bloku alebo priamo na stavu:

SecurePayButton(
// ...
update = {
setLoadingAnimationEnabled(false)
}
)

Po vypnutí animace zůstává tlačidlo počas spracovania v klidném deaktivovaném vzhledu bez vizualního efektu.

SecurePaymentStatusView (stavový banner)

Použití v Compose

V Compose se komponenta používa přes rememberPaymentStatusState(). Vizuální stylování není v Compose API priamo exponováno — komponenta automaticky aplikuje příslušné barvy (zelená/oranžová/červená) podle stavu platby. Překlad zpráv lze nastavit přes translation na stavu:

val statusState = rememberPaymentStatusState()
statusState.translation = Translation.Czech

SecurePaymentStatusView(state = statusState)

// Zobrazení výsledku:
statusState.showStatus(paymentResult)
// alebo:
statusState.showError("Vlastní chybová zpráva")
// Skrytí:
statusState.clear()

XML atribúty

XML atribútFormátPopis
app:statusViewTextstringPočáteční text zprávy (volitelné).
app:statusViewTextColorcolorFarba textu.
app:statusViewTextSizedimensionVelikost textu.
app:statusViewFontFamilystringRodina písma.
app:statusViewBackgroundColorcolorFarba pozadí banneru.
app:statusViewBorderColorcolorFarba orámovania.
app:statusViewBorderWidthdimensionŠírka orámovania.
app:statusViewCornerRadiusdimensionZaoblení rohů.
app:statusViewPaddingHorizontaldimensionHorizontální vnútorné odsadenie.
app:statusViewPaddingVerticaldimensionVertikální vnútorné odsadenie.

Metódy štylizácie

MetodaParametrPopis
setTextColor(color)IntNastaví farbu textu.
setTextSize(sp)FloatNastaví velikost textu v sp.
setFontFamily(family)StringNastaví rodinu písma.
setTypeface(typeface)TypefaceNastaví písmo pomocí instance Typeface.
setStatusBackgroundColor(color)IntNastaví farbu pozadí.
setBorderColor(color)IntNastaví farbu orámovania.
setBorderWidth(widthPx)IntNastaví šírku orámovania v pixeloch.
setBorderWidthDp(widthDp)FloatNastaví šírku orámovania v dp.
setCornerRadius(radiusPx)FloatNastaví zaoblenie rohů v pixeloch.
setCornerRadiusDp(radiusDp)FloatNastaví zaoblenie rohů v dp.
setStatusPadding(horizontalPx, verticalPx)Int, IntNastaví vnútorné odsadenie v pixeloch.
setStatusPaddingDp(horizontalDp, verticalDp)Float, FloatNastaví vnútorné odsadenie v dp.
Informácie

Pre väčšinu prípadov odporúčame používať *Dp varianty setterů (setBorderWidthDp, setCornerRadiusDp, setStatusPaddingDp). Vstupy jsou v dp a knižnica převod na pixely zajistí interně.

Tip

Komponenta začíná ve stavu GONE (skrytá). Zobrazí se automaticky po zavolání showStatus() a skryje se po zavolání clear(). Více informací o zobrazování stavů nájdete v sekcii Výsledky platby.