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") }
}
相关推荐
alexhilton2 天前
让架构边界变成可执行的测试
android·kotlin·android jetpack
我命由我123454 天前
Android Camera - 获取当前设备屏幕的旋转角度、保存帧到外部存储的私有空间
android·java·开发语言·java-ee·android jetpack·android-studio·android runtime
我命由我123455 天前
Android 开发 - 获取当前设备屏幕的旋转角度
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
我命由我123456 天前
人脸识别 - 判断人脸是否在画面中央
java·人工智能·python·java-ee·人脸识别·android jetpack·android runtime
一个用户名i8 天前
【Compose 系列】第 4 篇:布局与 Modifier,写界面不走弯路
android jetpack
一个用户名i8 天前
【Compose 系列】第 3 篇:状态管理入门,让界面「动」起来
android jetpack
alexhilton9 天前
规范驱动开发:让AI生成符合预期的KMP代码
android·kotlin·android jetpack
一个用户名i11 天前
【Compose 系列】第 1 篇:认识 Compose,为什么要学它
android·android jetpack
我命由我1234513 天前
Android 开发问题:unexpected element <service> found in <manifest>
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
我命由我1234513 天前
Android 开发问题:TopAppBar 和 topAppBarColors API is experimental...
android·java·java-ee·kotlin·android studio·android jetpack·android-studio