当文本字段获得焦点时,如何将光标设置在其随机位置?相当于editText.setSelection(position)经典的 android 视图系统。
这是我用来让编辑文本在添加到屏幕时自动接收焦点的代码。我希望能够将光标从默认位置 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, …Run Code Online (Sandbox Code Playgroud) 我有一个屏幕,带有TextFields. 我需要第一个TextField在屏幕显示时自动聚焦。
缩小的示例代码
@Composable
fun ScreenView(
data: ScreenViewData,
) {
val focusManager = LocalFocusManager.current
val focusRequester = remember {
FocusRequester()
}
LaunchedEffect(
key1 = Unit,
) {
focusRequester.requestFocus()
}
Scaffold() { innerPadding ->
Column {
OutlinedTextField(
modifier = Modifier.focusRequester(focusRequester),
)
}
}
}
Run Code Online (Sandbox Code Playgroud)
该代码可以正常运行,没有任何问题。
但是,在撰写 UI 测试时,我收到以下错误。
java.lang.IllegalStateException:
FocusRequester 未初始化。以下是一些可能的修复方法:
- 记住 FocusRequester: val focusRequester = Remember { FocusRequester() }
- 您是否忘记添加 Modifier.focusRequester() ?
- 您是否试图在构图过程中要求焦点?
应针对某些事件发出焦点请求。例如 Modifier.clickable { focusRequester.requestFocus() }
测试代码
@ExperimentalAnimationApi
class ScreenViewTest {
@get:Rule
val composeTestRule …Run Code Online (Sandbox Code Playgroud) android kotlin android-jetpack-compose android-jetpack-compose-testing
我的要求是,当我在文本字段中输入 1 位数字后,应将其转移到下一个文本字段。我到处都得到这样的答案。
简而言之,我正在寻找类似的功能,例如 android 中的 onTextChangeListener