如何在 Jetpack Compose 上更改 TextField 的突出显示文本颜色?
How to change TextField's highlighted text color on Jetpack Compose?
目前正在将我的应用程序转换为 Jetpack compose,在某些情况下,我在调整当前调色板时遇到了一些问题。
我的 xml 文件中有一些 TextInputLayout
继承了我主题中 SECUUNDARY 颜色的高亮文本颜色。
<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light.NoActionBar">
...
<item name="colorPrimary">@color/blue</item>
<item name="colorPrimaryVariant">@color/blue</item>
<item name="colorSecondary">@color/red</item>
<item name="colorSecondaryVariant">@color/red</item>
...
</style>
问题是我的 TextField
撰写时继承了 MaterialTheme
上的主要颜色的突出显示文本颜色。
MaterialTheme(
colors = Colors(
primary = Color.Blue,
...
secondary = Color.Red,
...
),
content = content,
typography = MaterialTheme.typography,
shapes = MaterialTheme.shapes,
) {
TextField(...)
}
我覆盖了 TextField
上的 colors
参数,但 none 似乎影响了这个颜色。
是否可以在不更改 MaterialTheme
上的 colors
的情况下覆盖撰写时的突出显示颜色?我想避免这种情况,因为它可能会在使用相同主题的其他屏幕上引起问题。
文本和文本字段组件用于文本选择的颜色由 LocalTextSelectionColors.current
提供。
您可以提供自定义 TextSelectionColors
使用:
val customTextSelectionColors = TextSelectionColors(
handleColor = Red,
backgroundColor = Red.copy(alpha = 0.4f)
)
CompositionLocalProvider(LocalTextSelectionColors provides customTextSelectionColors) {
TextField(
value = text,
onValueChange = { text = it },
colors = TextFieldDefaults.textFieldColors(cursorColor = Red)
)
}
如果您还想更改光标颜色,请添加 colors = TextFieldDefaults.textFieldColors(cursorColor = Red)
.
目前正在将我的应用程序转换为 Jetpack compose,在某些情况下,我在调整当前调色板时遇到了一些问题。
我的 xml 文件中有一些 TextInputLayout
继承了我主题中 SECUUNDARY 颜色的高亮文本颜色。
<style name="Theme.MyApp" parent="Theme.MaterialComponents.Light.NoActionBar">
...
<item name="colorPrimary">@color/blue</item>
<item name="colorPrimaryVariant">@color/blue</item>
<item name="colorSecondary">@color/red</item>
<item name="colorSecondaryVariant">@color/red</item>
...
</style>
问题是我的 TextField
撰写时继承了 MaterialTheme
上的主要颜色的突出显示文本颜色。
MaterialTheme(
colors = Colors(
primary = Color.Blue,
...
secondary = Color.Red,
...
),
content = content,
typography = MaterialTheme.typography,
shapes = MaterialTheme.shapes,
) {
TextField(...)
}
我覆盖了 TextField
上的 colors
参数,但 none 似乎影响了这个颜色。
是否可以在不更改 MaterialTheme
上的 colors
的情况下覆盖撰写时的突出显示颜色?我想避免这种情况,因为它可能会在使用相同主题的其他屏幕上引起问题。
文本和文本字段组件用于文本选择的颜色由 LocalTextSelectionColors.current
提供。
您可以提供自定义 TextSelectionColors
使用:
val customTextSelectionColors = TextSelectionColors(
handleColor = Red,
backgroundColor = Red.copy(alpha = 0.4f)
)
CompositionLocalProvider(LocalTextSelectionColors provides customTextSelectionColors) {
TextField(
value = text,
onValueChange = { text = it },
colors = TextFieldDefaults.textFieldColors(cursorColor = Red)
)
}
如果您还想更改光标颜色,请添加 colors = TextFieldDefaults.textFieldColors(cursorColor = Red)
.