Jetpack Compose:BasicTextField的cursorColor作用及使用疑问
关于Jetpack Compose中TextFieldColors.cursorColor的作用及你的使用问题
首先明确:TextFieldColors.cursorColor是给标准的OutlinedTextField/TextField组件设计的,这些组件内部会基于传入的TextFieldColors统一配置光标、边框、输入文字、提示文字等所有样式,光标颜色自然由这个参数控制。
再看你的代码:你是用BasicTextField手动嵌套OutlinedTextFieldDefaults.DecorationBox实现自定义搜索框。这种情况下,BasicTextField的cursorBrush是直接控制光标绘制的核心参数,而你传给DecorationBox的colors.cursorColor其实不会被用到——因为DecorationBox只负责外层装饰逻辑(比如边框、内边距、交互状态视觉反馈),光标是BasicTextField自身的绘制部分,和DecorationBox的colors参数无关。
你的使用方式不算错误,只是没必要在DecorationBox的colors里设置cursorColor,直接通过BasicTextField的cursorBrush控制光标颜色就足够了。如果想让cursorColor生效,你可以直接使用OutlinedTextField组件,而非手动组合BasicTextField和DecorationBox,示例代码如下:
var search by rememberSaveable { mutableStateOf("") } val interactionSource = remember { MutableInteractionSource() } OutlinedTextField( value = search, onValueChange = { search = it }, singleLine = true, interactionSource = interactionSource, colors = OutlinedTextFieldDefaults.colors( cursorColor = Color.Red, errorCursorColor = Color.Red ), contentPadding = PaddingValues(12.dp) )
这样cursorColor就会正常控制光标颜色了。
内容的提问来源于stack exchange,提问作者SageJustus
相关产品推荐
相关产品推荐

