Android 可访问性:如何更改搜索栏读取的字符串
Android accessibility: how to change the search bar readed string
正如我在标题中所写,Android Talkback 实际上读取了我的搜索栏的提示文本,但我需要更改该行为以读取自定义字符串(与提示不同)。我尝试设置 contentDescription 但它不起作用(对讲仍然读取提示文本)。
你有什么建议吗?
您可以在视图上设置 AccessibilityDelegate
来覆盖诸如它通常如何描述自身的内容:
ViewCompat.setAccessibilityDelegate(yourView, object : AccessibilityDelegateCompat(){
override fun onInitializeAccessibilityNodeInfo(host: View?, info: AccessibilityNodeInfoCompat?) {
super.onInitializeAccessibilityNodeInfo(host, info)
info?.let { it.text = "whatever" }
}
})
或者你可以重写 onPopulateAccessibilityEvent
(它处理像 AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED
这样的触发事件)并使用 event.getText()
,它给你一个 List<CharSequence>
你可以 add
你的描述。这实际上取决于您在做什么以及它需要多动态。
不幸的是,我还没有找到对所有这些东西的很好的概述,否则我会 link 你去看看。我认为代表是你需要研究的
正如我在标题中所写,Android Talkback 实际上读取了我的搜索栏的提示文本,但我需要更改该行为以读取自定义字符串(与提示不同)。我尝试设置 contentDescription 但它不起作用(对讲仍然读取提示文本)。
你有什么建议吗?
您可以在视图上设置 AccessibilityDelegate
来覆盖诸如它通常如何描述自身的内容:
ViewCompat.setAccessibilityDelegate(yourView, object : AccessibilityDelegateCompat(){
override fun onInitializeAccessibilityNodeInfo(host: View?, info: AccessibilityNodeInfoCompat?) {
super.onInitializeAccessibilityNodeInfo(host, info)
info?.let { it.text = "whatever" }
}
})
或者你可以重写 onPopulateAccessibilityEvent
(它处理像 AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED
这样的触发事件)并使用 event.getText()
,它给你一个 List<CharSequence>
你可以 add
你的描述。这实际上取决于您在做什么以及它需要多动态。
不幸的是,我还没有找到对所有这些东西的很好的概述,否则我会 link 你去看看。我认为代表是你需要研究的