如何在可访问性“本地上下文”菜单中添加自定义操作

时间:2019-09-25 06:58:15

标签: android accessibility contextmenu

启用“无障碍对讲”时。我需要在用户做出有角度的手势(即向上和向右滑动)时通过一些自定义动作显示我的视图。 类似于Gmail邮件,如下图所示 enter image description here

当用户绘制动作手势(即当焦点位于任何消息上时向右向上滑动)时显示此弹出窗口。 Action menu

2 个答案:

答案 0 :(得分:0)

您可以在AccessibilityNodeInfo的{​​{1}}方法内向onInitializeAccessibilityNodeInfo对象添加自定义操作。

如果用户随后选择了该操作,则会在视图上调用AccessibilityDelegate方法。

在示例中,“ myCustomAction”是显示给用户的文本。

MyCustomView.kt

performAccessibilityAction

res / values / accessibility.xml

init {
    accessibilityDelegate = object : View.AccessibilityDelegate() {
        override fun onInitializeAccessibilityNodeInfo(host: View?, info: AccessibilityNodeInfo?) {
            super.onInitializeAccessibilityNodeInfo(host, info)

            info?.addAction(AccessibilityNodeInfo.AccessibilityAction(R.id.myCustomAccessibilityEvent, "myCustomAction"));
        }
    }
}

override fun performAccessibilityAction(action: Int, arguments: Bundle?): Boolean {
    if (action == R.id.myCustomAccessibilityEvent) Log.d("TAG", "Accessibility event triggered")
    return true;
}

答案 1 :(得分:0)

要添加可访问性操作,请使用下面的代码行,并使用向后兼容API 21的ViewCompat。

ViewCompat.addAccessibilityAction(viewToAddActionTo,"String to describe what the action does", (v,b) -> actionCalled);
//a sample request would look like
ViewCompat.addAccessibilityAction(swipeLayout,"Delete Item in List",(v,b) -> deleteItem(position);

Custom Action Image

Addition of Actions in Local Context Menu

希望这足以满足要求,可以使用此操作将删除,加注星标,存档(类似于Gmail)添加到自定义视图中。 关键是要弄清楚哪个View需要执行该操作以及该执行什么操作。