Skládat - TextField - SelectAllOnFocus

0

Otázka

Pokud chceme, aby naše TextField mít odpovídající chování EditText:selectAllOnFocus = "true" můžeme udělat něco jako vytvořit TextFieldValue a nastavit výběr z nuly na délku jako TextRange(0, text.length)

To funguje, a když uživatel zaměření textového pole celý text si vybrali, problém je, že když jsme se vytvořit TextFieldValue musíme nastavit výběr, výchozí hodnota je Nula.

Pokud chce uživatel přetáhněte kurzor prostě nemůžu. Existuje způsob, jak nyní vytvořit selectAllOnFocus chování, které umožňuje uživateli přetáhněte kurzor po textu, pokud chce v kompozici?

1

Nejlepší odpověď

0

Ano, myslím, že jeden způsob, jak sledovat výsledek výběru pocházející z textového pole onValueChange zpětné volání:

var editableText by rememberSaveable { mutableStateOf("some text") }
val textRangeStart = rememberSaveable { mutableStateOf(0) }
val textRangeEnd = rememberSaveable { mutableStateOf(0) }
val textField = remember(editableText, textRangeEnd.value, textRangeStart.value) {
    mutableStateOf(
        TextFieldValue(
            text = editableText ?: "",
            selection = TextRange(textRangeStart.value, textRangeEnd.value)
        )
    )
}
TextField(
        modifier = Modifier.fillMaxSize(),
        value = textField.value,
        placeholder = { Text("") },
        onValueChange = {
            textEditorViewModel.editableText.value = it.text
            textRangeStart.value = it.selection.start
            textRangeEnd.value = it.selection.end
        }
    )
}
2021-11-23 14:33:57

fungovalo to, nakonec jsem si prostě muset sledovat textRangeStart a textRangeEnd umožňuje uživateli přetáhnout kurzor kolem, díky!
Ivan Regados

@IvanRegados ano, to je ten trik
zjmo

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................