Android 撰写 - 请求焦点
Android Compose - Request Focus
无法获得对任何撰写组件的关注。它曾经在项目中工作,但经过一些 gradle 更改后,我只能在某些屏幕上请求焦点。所以我开始了一个新项目来测试干净环境中的行为。通过此设置,onFocusChange 在 requestFocus 之前获取值“inactive”(这是正确的),然后更改为“deactivated”,在 requestFocus 之后,什么也没有。这是一个几乎没有代码的新项目
@Composable
fun Greeting(name: String) {
val focusRequester = remember { FocusRequester() }
Button(
onClick = {},
modifier = Modifier
.focusRequester(focusRequester = focusRequester)
.onFocusChanged {
it
}
.wrapContentSize()
,
) {
Text(text = "Hello $name!")
}
LaunchedEffect(Unit) {
this.coroutineContext.job.invokeOnCompletion {
focusRequester.requestFocus()
}
}
}
在我的 build.gradle 中,其中 compose_version = 1.1.1
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1'
implementation 'androidx.activity:activity-compose:1.4.0'
}
您需要添加 focusable
修饰符。它应该在 onFocusChanged
和 focusRequestor
修饰符之后,在某些情况下也可以用 focusTarget
代替。参见 focusRequestor
无法获得对任何撰写组件的关注。它曾经在项目中工作,但经过一些 gradle 更改后,我只能在某些屏幕上请求焦点。所以我开始了一个新项目来测试干净环境中的行为。通过此设置,onFocusChange 在 requestFocus 之前获取值“inactive”(这是正确的),然后更改为“deactivated”,在 requestFocus 之后,什么也没有。这是一个几乎没有代码的新项目
@Composable
fun Greeting(name: String) {
val focusRequester = remember { FocusRequester() }
Button(
onClick = {},
modifier = Modifier
.focusRequester(focusRequester = focusRequester)
.onFocusChanged {
it
}
.wrapContentSize()
,
) {
Text(text = "Hello $name!")
}
LaunchedEffect(Unit) {
this.coroutineContext.job.invokeOnCompletion {
focusRequester.requestFocus()
}
}
}
在我的 build.gradle 中,其中 compose_version = 1.1.1
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1'
implementation 'androidx.activity:activity-compose:1.4.0'
}
您需要添加 focusable
修饰符。它应该在 onFocusChanged
和 focusRequestor
修饰符之后,在某些情况下也可以用 focusTarget
代替。参见 focusRequestor