2017-03-14 6 views
1

음성 회보를 켤 때 내 회 전자에서 선택이 완료되면 즉시 포커스가 화면 상단 (도구 모음)으로 다시 이동합니다. 사용자가 선택한 직후 스피너에 초점을 맞추고 싶습니다.사용자 선택 후 회 전자 포커스를 회 전자 자체에 설정하십시오.

  • How can I use onItemSelected in Android?
  • : 내가 직접 내가 가지고있는 문제를 해결하지 않는 StackOverflow의 다음과 같은 질문에 답을 체크 아웃 한

    spinner.setFocusable(true); 
    spinner.setFocusableInTouchMode(true); 
    

    :

    나는 포커스로 스피너를 설정하는 시도

  • Adding Focus to a spinner

선택 항목이 설정됨에 따라 회 전자가 잠시 비활성화됨을 알게되었습니다. 나는 이것이 포커스가 다른 뷰로 위임되는 이유라고 생각합니다. 어떻게이 장애를 우회하거나 해결할 수 있습니까?

도움을 주시면 감사하겠습니다.

답변

0

나는 다음과 같은 수행하여이 문제를 해결할 수 있었다 시도 이 코드를 사용하십시오 :

if (isUserSelection && (AccessibilityManager)getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE)).isEnabled())) 
    durationSpinner.requestFocusFromTouch(); 
0

어디에 초점을 둡니까? 이런 식으로 초점을 요청하십시오. ,

private boolean isUserSelection; // to detect user selection 

    spinner.setChangeListener(this); 
    spinner.setFocusable(true); 
    spinner.setFocusableInTouchMode(true); 
    if (((AccessibilityManager)getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE)).isEnabled()) 
    { 
     spinner.setOnFocusChangeListener(new View.OnFocusChangeListener() 
     { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) 
      { 
       if (hasFocus && !isUserSelection) 
        v.performClick(); //bypasses the caret inside the spinner so user doesn't have to tap twice to open the drop down 
       else if (!hasFocus && isUserSelection) 
        v.requestFocus(); 
      } 
     }); 
    } 

회 전자의 itemSelectedListener에서 :

newlyFocusedView.setOnFocusChangeListener(new OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if(hasFocus){ 
      newlyFocusedView.clearFocus(); 
      spinner.requestFocus(); 
      spinner.performClick(); 
     } 
    } 
}); 

또한 (희망이 같은 문제를 가진 다른 사람이 도움) spinner.setFocusable(true);