Android 对讲不读取报头';儿童观点

Android 对讲不读取报头';儿童观点,android,accessibility,children,talkback,Android,Accessibility,Children,Talkback,我向列表视图添加一个标题。标题有几个组件(按钮、文本视图、相对视图)。当对讲打开且选择了报头时,将读取整个报头,并且您无法选择单个组件。尽管如此,按钮是可选择的,对讲将读取它们。但是文本视图并不是分开的 如何让对讲机将标题中的所有组件视为单个组件?简单回答:你不能 TalkBack试图通过收集列表视图单元格中的所有信息(读取:非活动)信息(标题视图仍然是列表视图的一部分)并将其作为一个元素读取,从而实现智能化。这会将该单元格中的任何信息关联在一起,我相信通过将对象放置的布局标记为重要的可访问性,

我向列表视图添加一个标题。标题有几个组件(按钮、文本视图、相对视图)。当对讲打开且选择了报头时,将读取整个报头,并且您无法选择单个组件。尽管如此,按钮是可选择的,对讲将读取它们。但是文本视图并不是分开的


如何让对讲机将标题中的所有组件视为单个组件?

简单回答:你不能

TalkBack试图通过收集列表视图单元格中的所有信息(读取:非活动)信息(标题视图仍然是列表视图的一部分)并将其作为一个元素读取,从而实现智能化。这会将该单元格中的任何信息关联在一起,我相信通过将对象放置的布局标记为重要的可访问性,尽管使用ListView单元格的特定逻辑可能会出现一些对讲魔术

例如,如果您的单元格如下所示:

Name: Chris
Address: Blah blah blah

Name: Herman
Address: Blarg blarg blarg
每个单元格将读出:

Name: Chris Adress Blah Blah Blah
这是有益的,因为不存在排序/数据关联问题。如果数据没有包装在一起呢?“诸如此类”的地址是属于克里斯(前面的名字)还是赫尔曼(后面的名字)?在这个等式中,活动元素被忽略,因为活动元素需要。。。很活跃。因此必须单独聚焦,以便用户可以与它们交互

有人肯定会争论这种方法相对于允许开发人员犯错误地进行不正确的数据关联的相对优点,但是已经做出了决定,您必须坚持下去

如果你真的在意,你可以重新发明轮子,使用线性布局创建你自己的列表视图,这其实并不难。在这种情况下,你当然可以得到你想要的任何行为。或者,将标题放在单独的布局中,而不是使用ListViews标题单元格

假设,如果我假设他们在ListView单元格上使用“isImportantForAccessibility”(isImportantForAccessibility),这就是实现的方式(与ListView的一些对讲魔术相反),那么在绘制单元格布局后,您可以爬上视图层次结构到单元格布局(因此Android框架已经有了自己的方式),并将isImportantForAccessibility重置为no。不过,我强烈建议您不要使用这种方法

答:我不确定它是否有效,这只是假设(不,我不打算自己测试)。如果这种逻辑确实是在对讲端,那么你真的真的被套住了,除非你想重新发明ListView或编写自己的屏幕阅读器


B:一般来说,这些智能的对讲方式试图帮助实现易访问性,而不是伤害易访问性。除非你真的了解可访问性,否则最好让Android来做它的事情。

我发现如果我将TextView设置为textIsSelectable(true),对讲机会将这些TextView识别为可选择的元素。为了在对讲未激活时不更改我的应用程序的功能,我使用AccessibilityManager检查对讲是否已激活