Поэтому я использую BasicTextField с меньшими отступами, вот так:
BasicTextField(
modifier = modifier,
value = value,
keyboardActions = keyboardActions,
keyboardOptions = keyboardOptions,
onValueChange = onValueChange,
textStyle = textStyle,
decorationBox = { innerTextField ->
if (value.isEmpty()) placeholder()
innerTextField()
}
)
Но проблема в том, что когда пользователь устанавливает темный фон, цвет курсора остается черным. Я изменил цвет текста, чтобы его можно было читать, но цвет курсора по-прежнему черный.
[img]https://i .sstatic.net/trUq6dVy.png[/img]

Поэтому цвет выделения и цвет курсора не видны.
Можно ли как-нибудь сделать его видимым? Сейчас я использую Материал 1.7.2.
Спасибо
РЕДАКТИРОВАТЬ:
Я пытался добавить CompositionLocalProvider, но это тоже не сработало. Цвет курсора по-прежнему черный.
val colors = TextSelectionColors(
handleColor = MaterialTheme.colors.onPrimary.copy(dimming),
backgroundColor = MaterialTheme.colors.onPrimary.copy(dimming)
)
CompositionLocalProvider(LocalTextSelectionColors provides colors) {
BasicTextField(
modifier = modifier,
value = value,
keyboardActions = keyboardActions,
keyboardOptions = keyboardOptions,
onValueChange = onValueChange,
textStyle = textStyle,
decorationBox = { innerTextField ->
if (value.isEmpty()) placeholder()
innerTextField()
}
)
}
Это когда я добавляю параметр цвета:
[img]https:/ /i.sstatic.net/3JzN3tlD.png[/img]
РЕДАКТИРОВАНИЕ 2:
Я узнал почему курсор не меняется в зависимости от темы.
В исходном коде здесь:
https://androidx.tech/artifacts/compose ... oundation/ 1.0.0-beta01-source/androidx/compose/foundation/text/BasicTextField.kt.html
cursorBrush жестко запрограммирован на черный цвет, если он оставлен пустым. Другого цвета по умолчанию нет. Поэтому вы должны указать цвет курсора, если хотите изменить его на любой другой, кроме черного, поскольку он не будет соответствовать цветам вашего theme.kt.
@Composable
fun BasicTextField(
value: TextFieldValue,
onValueChange: (TextFieldValue) -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true,
readOnly: Boolean = false,
textStyle: TextStyle = TextStyle.Default,
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
keyboardActions: KeyboardActions = KeyboardActions.Default,
singleLine: Boolean = false,
maxLines: Int = if (singleLine) 1 else Int.MAX_VALUE,
minLines: Int = 1,
visualTransformation: VisualTransformation = VisualTransformation.None,
onTextLayout: (TextLayoutResult) -> Unit = {},
interactionSource: MutableInteractionSource? = null,
cursorBrush: Brush = SolidColor(Color.Black),
decorationBox: @Composable (innerTextField: @Composable () -> Unit) -> Unit =
@Composable { innerTextField -> innerTextField() }
)
Подробнее здесь: https://stackoverflow.com/questions/790 ... -change-it
Мобильная версия