相关疑难解决方法(0)

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

当文本字段获得焦点时,如何将光标设置在其随机位置?相当于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)

android kotlin android-jetpack-compose

14
推荐指数
1
解决办法
1万
查看次数

IllegalStateException:在 Jetpack Compose 测试期间未初始化 FocusRequester

我有一个屏幕,带有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 未初始化。以下是一些可能的修复方法:

  1. 记住 FocusRequester: val focusRequester = Remember { FocusRequester() }
  2. 您是否忘记添加 Modifier.focusRequester() ?
  3. 您是否试图在构图​​过程中要求焦点?
    应针对某些事件发出焦点请求。例如 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

6
推荐指数
1
解决办法
2434
查看次数

如何将请求焦点转移到 Jetpack 撰写中的下一个文本字段

我的要求是,当我在文本字段中输入 1 位数字后,应将其转移到下一个文本字段。我到处都得到这样的答案。

简而言之,我正在寻找类似的功能,例如 android 中的 onTextChangeListener

请求关注 jetpack compose 中的 TextField

focus android-jetpack-compose

3
推荐指数
1
解决办法
4299
查看次数