1

我想明确可访问性焦点。但就我而言,这并不容易,因为当前具有焦点的对象在范围内不可访问,所以我不能调用它 clearAccessibilityFocus()。在这一刻,我请求将焦点放在我可以访问的其他对象上,然后清除焦点,但这不是一个好的解决方案。你能帮我解决这个问题吗?

4

4 回答 4

4

您可以使用

view.performAccessibilityAction(
            AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, null);

清除可访问性焦点。

于 2017-02-24T07:42:26.413 回答
2

我想你可以去:

myView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
于 2015-04-06T06:49:12.357 回答
1

您可以在视图中调用它。

setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);

我遇到了一个问题,即在添加到其他片段之上的片段上泄漏了可访问性。so onCreateView() 的第二个片段

container.getFocusedChild().setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
于 2016-05-20T19:22:53.303 回答
0

有两种可能的情况。如果您需要从真实视图中移除焦点,那么您可以这样做:

view.performAccessibilityAction(
    AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS, 
    null
)

但是,如果您需要从虚拟视图中移除焦点,那么您应该执行以下操作:

view.accessibilityNodeProvider?.performAction(
    virtualViewId,
    AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS,
    null
)
于 2021-02-03T10:12:38.817 回答