默认情况下,Android上的可点击视图将使用在内容描述后大声朗读(如果已启用TalkBack并且用户关注该视图)的使用提示进行呈现:
“双击激活”
我是否可以更改此内容,以便读取不太抽象且更具体的应用内容?像:
“点按两次即可播放视频”
答案 0 :(得分:3)
是的,这绝对是可能的!
onInitializeAccessibilityNodeInfo
方法如果您有自定义视图,则可以覆盖onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info)
方法并使用ACTION_CLICK
ID添加操作,以覆盖标签:
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.addAction(
new AccessibilityNodeInfo.AccessibilityAction(
AccessibilityNodeInfo.ACTION_CLICK,
"play video"
)
);
}
如果该视图有点击监听器,那么通过添加新的Action
,您将覆盖默认标签,以便TalkBack会说"双击"代替。
这仅适用于API 21 - 如果您想要在较低API版本上工作或想要在非自定义视图上设置自定义使用提示,该怎么办?您可以使用ViewCompat
和AccessibilityDelegateCompat
!
它非常相似 - 您可以覆盖扩展的自定义AccessibilityDelegate中的等效方法:
public static class PlayVideoAccessibilityDelegate extends AccessibilityDelegateCompat {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.addAction(
new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
AccessibilityNodeInfoCompat.ACTION_CLICK,
"play video"
)
);
}
}
然后使用它,您可以使用ViewCompat
:
ViewCompat.setAccessibilityDelegate(playButton, new PlayVideoAccessibilityDelegate());
Novoda有一个实用程序库,可以帮助Android上的辅助功能。这包括一些帮助设置使用提示的工具:
UsageHintsAccessibilityDelegate delegate = new UsageHintsAccessibilityDelegate(resources);
delegate.setClickLabel("play video");
ViewCompat.setAccesibilityDelegate(playButton, delegate);
我写了blogpost which is an overview of accessibilitools(我也是图书馆的撰稿人)。