В моем текущем проекте, использующем Jetpack Compose, передо мной стоит задача предоставить пользователям возможность вводить данные, а также предоставить функциональные возможности для стилизации текста с такими параметрами, как полужирный шрифт или курсив при нажатии кнопок. Учитывая мой новичок в Jetpack Compose, мне нужны рекомендации по эффективной реализации этой функции.
@Composable
fun CustomTextField() {
Код: Выделить всё
var isBold by remember { mutableStateOf(false) }
val textState = remember { mutableStateOf(TextFieldValue()) }
val prevPos by remember { mutableStateOf(0) }
Column() {
Button(onClick = {
isBold = !isBold
}) {
Text(text = "Toggle Bold")
}
TextField(
value = textState.value,
onValueChange = {
if (isBold) {
val annotatedString = buildAnnotatedString {
append(it.text)
addStyle(
SpanStyle(fontWeight = FontWeight.Bold),
prevPos,
it.text.length
)
}
textState.value = it.copy(annotatedString, it.selection, it.composition)
} else {
textState.value = it
}
},
textStyle = TextStyle(
fontSize = 16.sp,
lineHeight = 24.sp,
color = Color.Black
),
modifier = Modifier
.padding(16.dp)
.clip(MaterialTheme.shapes.medium)
.background(MaterialTheme.colors.surface)
)
}
i am trying through this but my whole text get bold after click on button
Источник: https://stackoverflow.com/questions/781 ... xt-styling
Мобильная версия