You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取常规TextField中的光标位置?有无可行方案?

获取Jetpack Compose常规TextField的光标位置

常规TextField本质是封装了BasicTextField的高阶组件,完全可以通过托管TextFieldValue状态来获取光标位置,具体操作如下:

  • 用remember创建MutableState<TextFieldValue>来管理输入状态,替代简化的String状态
  • 将该状态绑定到TextField的value参数,在onValueChange中更新状态
  • 通过状态的selection.start(未选中文本时start和end值一致)直接获取光标位置

示例代码:

@Composable
fun TrackCursorTextField() {
    val textState = remember { mutableStateOf(TextFieldValue("")) }

    TextField(
        value = textState.value,
        onValueChange = { textState.value = it },
        label = { Text("输入框") }
    )

    // 实时展示光标位置
    Text(text = "光标位置:${textState.value.selection.start}")
}

如果不想手动管理TextFieldValue,也可以通过FocusRequester配合LocalTextInputService获取输入状态,但这种方式依赖内部服务,实现复杂且稳定性不如直接托管状态,更推荐前者。

内容的提问来源于stack exchange,提问作者jgoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:32:35