У меня есть многострочное OutlinedTextField. Когда пользователь добавляет новую строку, я хочу программно добавить маркер, за которым следует пробел. Пока мне это удается, но проблема в том, что после добавления маркера позиция курсора все еще находится на новой строке, а не после маркера.
Это мое составное текстовое поле:@Composable
fun ExperienceDescTextField(
value: String,
onValueChange: (String) -> Unit,
placeholder: String,
modifier: Modifier = Modifier,
) {
val colorsOfTextFields = OutlinedTextFieldDefaults.colors(
cursorColor = Color.Black,
unfocusedContainerColor = Color.White,
focusedContainerColor = Color.White,
unfocusedBorderColor = onPrimaryColor,
focusedBorderColor = onPrimaryColor,
focusedTextColor = onPrimaryColor,
disabledTextColor = onPrimaryColor,
unfocusedPlaceholderColor = onPrimaryLightColor,
focusedPlaceholderColor = onPrimaryLightColor
)
OutlinedTextField(
value = value,
onValueChange = { newValue ->
val updatedValue = if (newValue.endsWith("\n")) {
// Append bullet point and indentation if a new line is entered
val bulletPoint = "\u25CF\t"
newValue + bulletPoint
} else if (newValue.endsWith("\u25CF")) {
newValue.dropLast(2)
} else {
newValue
}
val fieldValue =
TextFieldValue(text = updatedValue, selection = TextRange(updatedValue.length))
Log.e("TAG", "ExperienceDescTextField: $fieldValue")
onValueChange(fieldValue.text)
},
/*onValueChange = { newValue ->
onValueChange(newValue)
},*/
textStyle = TextStyle(
fontSize = 14.sp,
color = onPrimaryColor,
fontFamily = poppinsFont,
fontWeight = FontWeight.Normal,
),
modifier = modifier.fillMaxWidth(),
shape = RoundedCornerShape(4.dp),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Text, imeAction = ImeAction.Default
),
placeholder = {
Text(
placeholder,
fontSize = 14.sp,
fontFamily = poppinsFont,
fontWeight = FontWeight.Normal
)
},
colors = colorsOfTextFields,
singleLine = false,
minLines = 4,
maxLines = 7
)
}
И со своего экрана я называю это следующим образом:
ExperienceDescTextField(
value = viewModel.jobDescription.value,
onValueChange = {
viewModel.jobDescription.value = it
},
placeholder = stringResource(R.string.get_help_writing_your_bullet_points_with_help_of_ai_powered_examples_below),
modifier = Modifier.focusRequester(focusRequester),
)
Подробнее здесь: https://stackoverflow.com/questions/782 ... -textfield
Добавление маркера в многострочное текстовое поле ⇐ Android
Форум для тех, кто программирует под Android
1712652983
Гость
У меня есть многострочное OutlinedTextField. Когда пользователь добавляет новую строку, я хочу программно добавить маркер, за которым следует пробел. Пока мне это удается, но проблема в том, что после добавления маркера позиция курсора все еще находится на новой строке, а не после маркера.
Это мое составное текстовое поле:@Composable
fun ExperienceDescTextField(
value: String,
onValueChange: (String) -> Unit,
placeholder: String,
modifier: Modifier = Modifier,
) {
val colorsOfTextFields = OutlinedTextFieldDefaults.colors(
cursorColor = Color.Black,
unfocusedContainerColor = Color.White,
focusedContainerColor = Color.White,
unfocusedBorderColor = onPrimaryColor,
focusedBorderColor = onPrimaryColor,
focusedTextColor = onPrimaryColor,
disabledTextColor = onPrimaryColor,
unfocusedPlaceholderColor = onPrimaryLightColor,
focusedPlaceholderColor = onPrimaryLightColor
)
OutlinedTextField(
value = value,
onValueChange = { newValue ->
val updatedValue = if (newValue.endsWith("\n")) {
// Append bullet point and indentation if a new line is entered
val bulletPoint = "\u25CF\t"
newValue + bulletPoint
} else if (newValue.endsWith("\u25CF")) {
newValue.dropLast(2)
} else {
newValue
}
val fieldValue =
TextFieldValue(text = updatedValue, selection = TextRange(updatedValue.length))
Log.e("TAG", "ExperienceDescTextField: $fieldValue")
onValueChange(fieldValue.text)
},
/*onValueChange = { newValue ->
onValueChange(newValue)
},*/
textStyle = TextStyle(
fontSize = 14.sp,
color = onPrimaryColor,
fontFamily = poppinsFont,
fontWeight = FontWeight.Normal,
),
modifier = modifier.fillMaxWidth(),
shape = RoundedCornerShape(4.dp),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Text, imeAction = ImeAction.Default
),
placeholder = {
Text(
placeholder,
fontSize = 14.sp,
fontFamily = poppinsFont,
fontWeight = FontWeight.Normal
)
},
colors = colorsOfTextFields,
singleLine = false,
minLines = 4,
maxLines = 7
)
}
И со своего экрана я называю это следующим образом:
ExperienceDescTextField(
value = viewModel.jobDescription.value,
onValueChange = {
viewModel.jobDescription.value = it
},
placeholder = stringResource(R.string.get_help_writing_your_bullet_points_with_help_of_ai_powered_examples_below),
modifier = Modifier.focusRequester(focusRequester),
)
Подробнее здесь: [url]https://stackoverflow.com/questions/78296652/adding-bullet-point-to-multiline-textfield[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия