Jetpack Compose,文本字段中的自定义光标位置

Jetpack Compose, custom cursor position in TextField(Jetpack Compose,文本字段中的自定义光标位置)

本文介绍了Jetpack Compose,文本字段中的自定义光标位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当文本字段获得焦点时,如何将光标设置在其上的任意位置? 相当于经典Android查看系统的editText.setSelection(position)

这是我用来让编辑文本在添加到屏幕时自动接收焦点的代码。 我希望能够将光标从默认位置0移动

val (getText, setText) = remember { mutableStateOf("hello") }
AutofocusEditText(
    text = getText,
    setText = setText
)
    
...

@Composable
private fun AutofocusEditText(
    text: String,
    setText : (String) -> Unit
) {
    val focusState = remember { mutableStateOf(FocusState.Inactive) }
    val focusRequester = FocusRequester()
    val focusModifier = Modifier.focus()
    Row(
        modifier = Modifier.focusObserver { newFocusValue -> focusState.value = newFocusValue }
    ) {
        val focusRequesterModifier =
            Modifier.focusRequester(focusRequester)

        TextField(
            value = text,
            modifier = focusModifier.then(focusRequesterModifier),
            backgroundColor = Color.Transparent,
            onValueChange = setText,
            keyboardOptions = KeyboardOptions.Default.copy(
                imeAction = ImeAction.Done
            ),
            onImeActionPerformed = { action, softKeyboardController ->
                if (action == ImeAction.Done) {
                    softKeyboardController?.hideSoftwareKeyboard()
                }
            }
        )
    }
    onActive {
        focusRequester.requestFocus()
    }
}

推荐答案

您必须使用TextFieldValue版本的文本字段。

@Composable
fun TextField(
    value: TextFieldValue,
    onValueChange: (TextFieldValue) -> Unit,
    /* ... */) {/* Impl *

本文标题为:Jetpack Compose,文本字段中的自定义光标位置

基础教程推荐