关于天坦读屏在 Compose 中 `traversalIndex` 支持的反馈

8 Eureka 3周前 375次点击

我遇到了一个关于天坦读屏对 Compose 中 `traversalIndex` 属性支持的问题(传统 的 View应该也一样可以重现)。

关于 Accessibility 遍历顺序,根据我的了解,有以下规则:

1. 默认的遍历顺序: 对于使用 Compose 构建的应用,默认情况下,Accessibility service 的遍历顺序通常是 从左到右,从上到下。

2. 默认的排序算法: AccessibilityDelegate 内部的算法在处理 accessibility tree 的时候首先会按照几何位置对元素进行排序。具体来说,它会先将元素 按行分组 ,然后 从左到右 读取每一行中的元素,最后 按从上到下的顺序 处理每一行。

3. 处理重叠元素: 如果界面元素发生重叠,仅仅依靠几何位置可能无法确定正确的遍历顺序。在这种情况下,还会考虑元素的 zIndex 属性 。 zIndex 值较高的元素可能会被优先遍历。

4. 自定义遍历顺序(traversalIndex): 如果默认的几何排序和 zIndex 仍然无法满足开发者对遍历顺序的需求,Compose 提供了 traversalIndex 属性,允许开发者进一步自定义元素的遍历顺序。

我在我的应用中尝试使用这个属性来确保某些特定元素的阅读顺序符合逻辑,而不会受到其视觉布局的影响。

具体来说,在一个 ComposeView 中,我有一个包含两个按钮的 Row。由于某些状态控制,这两个按钮的视觉呈现可能会动态变化。为了保证屏幕阅读器始终按照我期望的顺序朗读这两个按钮,我为它们设置了不同的 traversalIndex 值。

然而,在我的测试中,我发现天坦读屏似乎并没有按照我设置的 traversalIndex 来进行元素的遍历。无论我将哪个按钮的 traversalIndex 设置得更小,天坦读屏的焦点移动顺序似乎仍然是基于某种其他的逻辑(很可能是默认的几何排序)。

p.s. 先前有跟小红书的工程师交流过,小红书的首页笔记也会受到这个问题的影响。

谢谢,希望早日修复。

共 7 条评论
车厘子 3周前
0 
太专业了,看不懂。,只能给楼主顶楼了。

认出来了,大佬请坐,顶上去希望管理员看到

开发-zhp 3周前
0 
这个问题吧,有点无解,要想解决估计就只能给开关了,因talkback 那一套焦点重排的规则实在是太影响速度了,所以我们直接就没有做支持了,现实当中会主动做焦点顺序设定的三方应用实在太少,这么多年我几乎没碰到过
0 

心智无障碍助手有个极速模式的开关,是不是他们就做了两种模式?我感觉有两套方案就挺好的,可以向无障碍通道和媒体通道那样,用手势切换,我是比较喜欢talkback的那种焦点逻辑的

开发-zhp 3周前
0 
早起我们也是做了两种模式的,后来经过考量还是决定去掉了
勿扰 3周前
0 
话说有个问题,麻烦修复一下。手机搜狗输入法中,它无论是切换到大写还是小写,他依然会朗读大写
0 

什么鬼啊,没听明白

添加一条新评论

登录后可以发表评论 去登录