Kotlin: Формы ввода текста

Для создания формы ввода текста в Jetpack Compose можно использовать TextField. Вот пример реализации:
@Composable
fun TextInputForm() {
    Column(
        modifier = Modifier
            .fillMaxSize()
            .padding(16.dp),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        // Поле для ввода текста
        var text by remember { mutableStateOf("") }
        
        TextField(
            value = text,
            onValueChange = { newText ->
                text = newText
            },
            label = { Text("Введите текст") },
            modifier = Modifier
                .fillMaxWidth()
                .padding(bottom = 16.dp)
        )
        
        // Кнопка отправки
        Button(
            onClick = { 
                // Здесь обработка введенного текста
                println("Введенный текст: $text")
            },
            modifier = Modifier.fillMaxWidth()
        ) {
            Text("Отправить")
        }
    }
}

Основные компоненты формы



TextField: поле ввода:
  • value — текущее значение текста.
  • onValueChange — обработчик изменения текста.
  • label — подсказка над полем.

Button: кнопка отправки:
  • Содержит обработчик клика.
  • Можно добавить любую логику обработки.

Дополнительные настройки TextField



Внешний вид:
TextField(
    // ...
    placeholder = { Text("Пример текста") },  // Подсказка при пустом поле
    singleLine = true,  // Однострочный ввод
    keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Text),  // Тип клавиатуры
    keyboardActions = KeyboardActions(onDone = { /* Действия при нажатии Done */ })
)

Стилизация:
TextField(
    // ...
    colors = TextFieldDefaults.textFieldColors(
        focusedIndicatorColor = Color.Blue,
        unfocusedIndicatorColor = Color.Gray
    ),
    shape = RoundedCornerShape(8.dp)  // Скругленные углы
)

Как использовать


Добавьте эту форму в ваш Composable-компонент:
@Composable
fun MyScreen() {
    TextInputForm()
}

Вы можете расширить форму, добавив:
  • Несколько полей ввода.
  • Валидацию данных.
  • Индикаторы ошибок.
  • Дополнительные кнопки (очистка, копирование).


Автор:  01.02.2026 05:43:55 am