在 API 21+ 中,您可以通过在 View 的AccessibilityNodeInfo
. 有两种方法:1) 设置AccessibilityDelegate
并覆盖onInitializeAccessibilityNodeInfo
委托方法或 2) 扩展视图的类并覆盖onInitializeAccessibilityNodeInfo
。
无论哪种方式,您都将构建一个新的AccessibilityAction并使用AccessibilityNodeInfo.addAction在节点上设置它。
如果您选择使用委托,您将为单击操作设置自定义描述,如下所示:
view.setAccessibilityDelegate(new AccessibilityDelegate() {
@Override
public void onInitializeAccessibilityNodeInfo(
View v, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(v, info);
// A custom action description. For example, you could use "pause"
// to have TalkBack speak "double-tap to pause."
CharSequence description = getResources().getText(R.string.my_click_desc);
AccessibilityAction customClick = new AccessibilityAction(
AccessibilityAction.ACTION_CLICK, description);
info.addAction(customClick);
}
});
如果您的应用程序以 API < 21 为目标,请替换适当的*Compat
支持库方法。该功能未向后移植,因此您不会在 API < 21 上获得自定义描述,但您将能够避免在应用程序代码中进行显式版本检查。