Android - 如何清除可访问性焦点

时间:2013-10-14 09:18:14

标签: android focus accessibility

我想清楚可访问性的重点。但在我的情况下,目前有焦点的对象在范围内无法访问并不容易,所以我无法调用它clearAccessibilityFocus()。在这一刻,我请求专注于其他对象,我有权访问然后清除焦点,但这不是一个好的解决方案。 你能帮帮我吗?

4 个答案:

答案 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
)