Android Compose Jetpack 在屏幕打开时自动聚焦于 TextField 或以编程方式根据应用程序要求

Mad*_*Gor 6 android kotlin android-jetpack android-jetpack-compose

我正在使用 android compose jetpack 版本“0.1.0-dev14”。根据应用程序要求,我想在屏幕可见时自动聚焦 TextField。另一种情况是我想将同一屏幕中的下一个 TextField 集中在下一个 ImeAction.Next 操作上。我找不到解决这个问题的任何方法或解决方案。如果有人可以帮助我解决这个问题,我将非常感激。

谢谢..!!

Gab*_*tti 6

1.0.0实现自动对焦,您可以使用:

DisposableEffect(Unit) {
    focusRequester.requestFocus()
    onDispose { }
}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,系统将焦点授予与 this 相关的组件FocusRequester。例如:

val focusRequester = FocusRequester()
TextField(
    //...
    modifier = Modifier
        // add focusRequester modifier 
        .focusRequester(focusRequester)
)
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 2

此示例演示如何请求将焦点放在下一个视图上。

要在屏幕上的第一个视图上实现自动对焦,我相信可以使用以下方法:

// ... composable context...

onActive(callback = {
    focusModifiers.first().requestFocus()
})

// ... composable context...
Run Code Online (Sandbox Code Playgroud)