我有一个有长按动作处理程序的视图 . 我使用内容描述来设置消息,当视图获得焦点时,Talkback会说话 .
目前它在获得焦点后立即说出了我的内容描述,并在短暂停顿后说:
双击激活,双击并按住长按
我想将此消息更改为类似的内容
双击“动作1”,双击并按住“动作2”
有办法吗?
我查看 onPopulateAccessibilityEvent()
,它得到 TYPE_VIEW_ACCESSIBILITY_FOCUSED
事件,但我无法更改所需的消息 .
我错过了一些简单的事吗?
3 回答
在API 21中,您可以通过在View的
AccessibilityNodeInfo
上设置自定义操作来自定义操作名称 . 有两种方法:1)设置AccessibilityDelegate
并覆盖onInitializeAccessibilityNodeInfo
委托方法或2)扩展视图的类并覆盖onInitializeAccessibilityNodeInfo
.无论哪种方式,您将构建一个新的AccessibilityAction并使用AccessibilityNodeInfo.addAction在节点上设置它 .
如果您选择使用委托,则应为单击操作设置自定义说明,如下所示:
如果您的应用程序目标API <21,请替换相应的
*Compat
支持库方法 . 该功能未向后移植,因此您无法获得API <21的自定义说明,但您可以避免在应用程序代码中进行显式版本检查 .自 alanv 发布他的答案后,似乎
AccessibilityAction
略有变化 . 这是一个使用ViewCompat
的工作解决方案:对于那些想要删除所有短语的人,请使用以下代码 . “双击” .
这基本上是调用以下代码而
requestFocus
没有与之关联的任何默认对讲通知 .