首页 > 解决方案 > 选择 Jetpack Compose 中 TextField 的所有文本

问题描述

我在 Jetpack Compose 中使用 TextField 组件。获得焦点时如何选择所有文本?

标签: kotlintextfieldandroid-jetpack-compose

解决方案


在这种情况下,你应该使用你TextFieldValue的状态TextField,当它收到焦点时,你设置selection使用TextFieldValue状态。

val state = remember {
    mutableStateOf(TextFieldValue(""))
}
TextField(
    value = state.value,
    onValueChange = { text -> state.value = text },
    modifier = Modifier
        .onFocusChanged { focusState ->
            if (focusState.isFocused) {
                val text = state.value.text
                state.value = state.value.copy(
                    selection = TextRange(0, text.length)
                )
            }
        }
)

结果如下:

在此处输入图像描述

请注意,根据您的触摸,光标会转到触摸的位置,而不是选择整个文本。您可以尝试弄清楚这是错误还是功能:)


推荐阅读