【问题标题】:Android Keyboard Navigation in Jetpack ComposeJetpack Compose 中的 Android 键盘导航
【发布时间】:2022-01-08 01:11:58
【问题描述】:

我正在尝试在 Jetpack Compose 中实现键盘导航。

有一个LazyColumn,其中包含一些列表元素,如Row{},所有行都是可点击的并获得焦点。我想要实现的是在到达屏幕底部后滚动到列表中的下一项。

按下DOWN箭头键/TAB键后,焦点停止在屏幕底部,不会向下滚动。我期望它自动发生是错误的吗?我们是否需要使用按键事件以及如何使用按键事件来支持使用 Jetpack Compose 使用键盘进行滚动。

代码:

LazyColumn(
            modifier = Modifier
                .padding(horizontal = Spacing2X)
                .padding(top = Spacing2X)
        ) {
            items(SOME_LIST_HERE) {
                Row(modifier = Modifier.clickable { }) {
                    Text(text = "")
                }
            }
        }

场景视频:https://twitter.com/karan4c6/status/1479426842566094849

【问题讨论】:

    标签: android keyboard accessibility android-jetpack-compose keyboard-navigation


    【解决方案1】:

    您必须使用lazyListState 来实现这一点。首先,您需要使用val state = rememberLazyListState() 创建它,然后将其作为参数提供给您的LazyColumn

    然后,您需要在每次焦点更改时使用 state.layoutInfo.visibleItemsInfo 以查看当前可见的项目,将这些知识与 state.firstVisibleItemIndex 以及当前聚焦的项目结合起来,并使用它进行相应的滚动。

    这是一个涉及处理索引的 hacky 解决方案,但我成功了。从那以后我就无法访问该项目,因此我无法为您提供工作示例,抱歉。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 2022-11-21
      • 2022-06-27
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2023-03-28
      • 2021-10-13
      相关资源
      最近更新 更多