我想清楚可访问性的重点。但在我的情况下,目前有焦点的对象在范围内无法访问并不容易,所以我无法调用它clearAccessibilityFocus()。在这一刻,我请求专注于其他对象,我有权访问然后清除焦点,但这不是一个好的解决方案。 你能帮帮我吗?
答案 0 :(得分:3)
您可以使用
view.performAccessibilityAction(
AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);
清除可访问性焦点。
答案 1 :(得分:2)
我猜你可以选择:
myView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
答案 2 :(得分:1)
您可以在视图中调用此方法。
setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
我遇到了一个问题,即在其他片段顶部添加的片段泄露了可访问性。 所以onCreateView()的第二个片段
container.getFocusedChild().setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
答案 3 :(得分:0)
有两种可能的情况。如果您需要从真实视图中移除焦点,那么您可以这样做:
view.performAccessibilityAction(
AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS,
null
)
但是如果您需要从虚拟视图中移除焦点,那么您应该执行以下操作:
view.accessibilityNodeProvider?.performAction(
virtualViewId,
AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS,
null
)