2014-09-25 6 views
1

내 접근성 서비스의 editText에서 특정 동작에 대한 입력 포커스를 지우고 싶습니다. performAction (AccessibilityNodeInfo.ACTION_CLEAR_FOCUS)이 editText에서 항상 false를 반환하는 이유는 무엇입니까?

나는 입력 포커스가있는 노드를 얻고을 취소하려고하지만 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 

} 

왜 작업을 수행 할 수 없습니다?

답변

0

보기에서 포커스를 지우면 뷰 프레임 워크가 포커스를 첫 번째 포커스 요소에 다시 적용하려고 시도합니다. 따라서 EditText와 같이 화면에 focusable 요소가 하나있는 경우 clearFocus()를 호출하더라도 항상 포커스가 있습니다.

+0

그리고 뷰 요소를 제어하지 않고 액세스 가능성 서비스에서 요소를 포커스 할 수 있는지 관리 할 방법이 없습니까? 그것은 응용 프로그램이 아니라 서비스입니다. 어쩌면 editText에서 포커스를 제거하기 위해 포커스 가능 속성을 변경할 수 있습니다. – probitaille

+0

아니요, 접근 기능 서비스에서보기 속성을 수정할 수 없습니다. – alanv

관련 문제