
Náš Android tech stack pro vývoj mobilních aplikací

28. Feb 2023
AndroidTextové pole je součást uživatelského rozhraní, která umožňuje uživatelům zadávat textové informace, zpravidla ve formulářích. V Material designu jsou dva typy textových polí: vyplněná textová pole nebo obrysová textová pole. Obě poskytují stejné funkce, takže váš výběr by měl být založený na stylových preferencích. Kombinovat je se nedoporučuje.
Oba typy textových polí se skládají z kontejneru (1), volitelné úvodní ikony (2), štítku (3), vstupního textu (4), volitelné koncové ikony (5), indikátoru aktivace (6) a volitelného pomocného textu (7).
Compose poskytuje OutlinedTextField, které je composable tak, aby splňovalo specifikaci Material designu. Bez dalšího přizpůsobení vypadá OutlinedTextField takto
Tento composable má asi 20 parametrů, ale pouze dva z nich jsou povinné.
@Composable
fun OutlinedTextField(
value: String,
onValueChange: (String) -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true,
readOnly: Boolean = false,
textStyle: TextStyle = LocalTextStyle.current,
label: @Composable (() -> Unit)? = null,
placeholder: @Composable (() -> Unit)? = null,
leadingIcon: @Composable (() -> Unit)? = null,
trailingIcon: @Composable (() -> Unit)? = null,
isError: Boolean = false,
visualTransformation: VisualTransformation = VisualTransformation.None,
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
keyboardActions: KeyboardActions = KeyboardActions.Default,
singleLine: Boolean = false,
maxLines: Int = Int.MAX_VALUE,
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
shape: Shape = MaterialTheme.shapes.small,
colors: TextFieldColors = TextFieldDefaults.outlinedTextFieldColors()
)
Volitelné parametry, které je možné přizpůsobit, jsou:
label = { Text(text = "Label for text") }
placeholder = { Text(text = "Placeholder for text") }
leadingIcon = { Icon(imageVector = Icons.Default.Info, contentDescription = "") }
//OR
leadingIcon = { Text(text = "$") }
visualTransformation = PasswordVisualTransformation()
keyboardOptions = KeyboardOptions.Default.copy(
capitalization = KeyboardCapitalization.Words,
autoCorrect = false,
keyboardType = KeyboardType.Text,
imeAction = ImeAction.Search
)
keyboardActions = KeyboardActions(
onAny = {} // do when ANY of ime actions is emitted
)
//OR
keyboardActions = KeyboardActions(
onDone = {}, // do when SPECIFIED action is emitted
onSearch = {},
.
.
}
colors = TextFieldDefaults.outlinedTextFieldColors(
focusedBorderColor = Color.Yellow,
leadingIconColor = Color.Yellow
)
Compose poskytuje textové pole, které se dá sestavit tak, aby splňovalo specifikaci Material designu pro vyplněné textové pole. Bez dalších úprav vypadá textové pole takto:
Všechny parametry composable funkce TextField jsou stejné jako u OutlinedTextField (kromě jiného tvaru a barev) a mají stejné použití.
Pole TextField, které je nastaveno na hodnotu false
Textové pole se štítkem
Textové pole s úvodní ikonou
TextField v chybovém stavu