我的Android应用包含基于SeekBar
的自定义滑块控件,我想在我的控件中附加自定义文字短语,以解释其对辅助功能的使用。
我使用View.setContentDescription(text)
成功完成了此操作,当我请求从Activity.onCreate
开始关注我的滑块控件时,TalkBack正确地说出了这句话。
到目前为止,这么好。但是,当我触摸控件时,我认为将AccessibilityFocus设置在我的Android API 16测试设备上,会在口头短语中添加额外的单词,即“寻求控制”。 0%'我想删除这些额外的单词。
我尝试使用event.getText().clear()
中的View.onInitializeAccessibilityEvent(event)
消除它们但没有成功。将事件回显给LogCat报告event.contentDescription
中的正确短语,event.text
中没有条目,但额外的单词同时出现在设备硬件的音频输出中以及<显示的屏幕调试文本中em>菜单 - &gt;设置 - &gt;辅助功能 - &gt; TalkBack-&gt;设置 - &gt;开发人员设置 - &gt;显示语音输出。
任何人都可以建议添加额外词语的位置,以及如何消除它们?
任何建设性的建议都会受到欢迎。感谢。
更新
我可以看到自定义控件上的一些触摸式触摸(初始单击)事件未通过其onInitializeAccessibilityEvent
或dispatchPopulateAccessibilityEvent
方法,因为我故意调用event.setContentDescription(null)
。尽管如此,我的自定义控件AccessibilityEvent
生成ContentDescription
,代码中设置为Activity.onCreate
,加上我试图消除的额外字词。
我还在自定义控件的父AccessibilityDelegate
上设置ViewGroup
,以便查看其onRequestSendAccessibilityEvent
来电。这确认没有包含我的ContentDescription
的事件正在通过。
这非常令人费解,并且在模拟器和使用API 16的真实硬件上都会发生。有什么想法吗?
答案 0 :(得分:1)
我认为这是TalkBack中的一个错误,并且已经提出了Google Eyes-Free issue #375,包括示例代码。
更新:Google现已将此归档。链接已移至:http://code.google.com/archive/p/eyes-free/issues/375
答案 1 :(得分:1)
并在那里设置contentDescription。
如果要删除0%,我会尝试更改AccessibilityNodeInfo / AccessibilityEvent中的类: http://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.html#setClassName(java.lang.CharSequence)