为什么performAction(AccessibilityNodeInfo.ACTION_CLEAR_FOCUS)总是在editText上返回false?

时间:2014-09-25 13:50:58

标签: android android-edittext accessibility

我希望在特定操作的可访问性服务中清除editText的输入焦点。

我得到了具有输入焦点的节点并尝试清除它但是performAction总是返回false:

AccessibilityNodeInfo root = getRootInActiveWindow();
AccessibilityNodeInfo focus = root.findFocus(AccessibilityNodeInfo.FOCUS_INPUT);

if(focus != null){

    focus.getText(); //return the text in my input
    focus.isFocusable(); //return true
    focus.isFocused(); // return true
    focus.getActions(); //Return the bitmask that contain the Action_clear_focus

    boolean sucess = focus.performAction(AccessibilityNodeInfo.ACTION_CLEAR_FOCUS);
    Log.v(TAG, "sucess = " + sucess); //Always return FALSE

}

为什么无法执行操作?

1 个答案:

答案 0 :(得分:0)

如果从视图中清除焦点,视图框架将尝试将焦点放回屏幕上的第一个可聚焦元素。因此,如果屏幕上有一个可聚焦元素,如EditText,它将始终具有焦点 - 即使您调用clearFocus()。