Цвет курсора BasicTextField остается черным в темном режиме. Как это изменить?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Цвет курсора BasicTextField остается черным в темном режиме. Как это изменить?

Сообщение Anonymous »

Я пробовал использовать OutlinedTextField или простой TextField, но обнаружил, что отступы слишком велики. И что бы я ни делал, оно просто не сжимается.
Поэтому я использую 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»