Compose 在Row、Column上使用focusRestorer修饰符失效原因

focusRestorer 修饰符官方说明

复制代码
This modifier can be used to save and restore focus to a focus group. When focus leaves the focus group, it stores a reference to the item that was previously focused. Then when focus re-enters this focus group, it restores focus to the previously focused item.
Params:
fallback - A FocusRequester that is used when focus restoration fails to restore the initially focused item. For example, this might happen if the item is not available to be focused. The default value of FocusRequester.Default chooses the default focusable item.
Samples:
androidx.compose.ui.samples.FocusRestorerSample
LazyRow(Modifier.focusRestorer()) {
    item { Button(onClick = {}) { Text("1") } }
    item { Button(onClick = {}) { Text("2") } }
    item { Button(onClick = {}) { Text("3") } }
    item { Button(onClick = {}) { Text("4") } }
}
androidx.compose.ui.samples.FocusRestorerCustomFallbackSample
val focusRequester = remember { FocusRequester() }
LazyRow(
    // If restoration fails, focus would fallback to the item associated with focusRequester.
    Modifier.focusRestorer(focusRequester)
) {
    item {
        Button(modifier = Modifier.focusRequester(focusRequester), onClick = {}) { Text("1") }
    }
    item { Button(onClick = {}) { Text("2") } }
    item { Button(onClick = {}) { Text("3") } }
    item { Button(onClick = {}) { Text("4") } }
}

即针对focus group才能使用

所以 需要添加focusGroup修饰符

kotlin 复制代码
val focusRequester = remember { FocusRequester() }
Row(
    // If restoration fails, focus would fallback to the item associated with focusRequester.
    Modifier.focusRestorer(focusRequester).focusGroup() // 这里是关键
) {
    Button(modifier = Modifier.focusRequester(focusRequester), onClick = {}) { Text("1") }
    Button(onClick = {}) { Text("2") }
    Button(onClick = {}) { Text("3") }
    Button(onClick = {}) { Text("4") }
}
相关推荐
雨白2 天前
Jetpack Compose 实战:复刻 Material 3 圆形波浪进度条
android·android jetpack
雨白6 天前
Jetpack Compose 实战:自定义自适应分段按钮 (Segmented Button)
android·android jetpack
用户69371750013846 天前
3.Kotlin 流程控制:告别 if-else 嵌套:If 表达式
android·kotlin·android jetpack
用户69371750013846 天前
2.Kotlin 函数:函数进阶:可变参数 (vararg) 与局部函数
android·kotlin·android jetpack
木子予彤7 天前
Compose 中的系统区域适配
android·android jetpack
alexhilton8 天前
Jetpack Compose中的阴影艺术
android·kotlin·android jetpack
无知的前端8 天前
一文读懂-Jetpack与AndroidX
android·kotlin·android jetpack
雨白11 天前
Jetpack Compose Navigation 2.x 详解
android·android jetpack
雨白14 天前
Hilt 入门指南:从 DI 原理到核心用法
android·android jetpack
我命由我1234514 天前
Android 开发 - Android JNI 开发关键要点
android·java·java-ee·android studio·android jetpack·android-studio·android runtime