启用“无障碍对讲”时。我需要在用户做出有角度的手势(即向上和向右滑动)时通过一些自定义动作显示我的视图。 类似于Gmail邮件,如下图所示 enter image description here
当用户绘制动作手势(即当焦点位于任何消息上时向右向上滑动)时显示此弹出窗口。 Action menu
答案 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);
希望这足以满足要求,可以使用此操作将删除,加注星标,存档(类似于Gmail)添加到自定义视图中。 关键是要弄清楚哪个View需要执行该操作以及该执行什么操作。