2017-03-14 34 views
1

TalkBackをオンにすると、Spinnerで選択が行われると、フォーカスはすぐに画面(ツールバー)の上部に戻ります。ユーザーが選択した直後にスピナーにフォーカスしたいと思います。ユーザー選択後、Spinner自体にSpinnerフォーカスを設定する

  • How can I use onItemSelected in Android?
  • :私は、直接私が持っている問題に対処していないのStackOverflow以下の質問と回答をチェックアウトした

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

    は私がフォーカス可能であることをスピナーを設定しようとしています

  • Adding Focus to a spinner

選択が設定されているため、スピナーが一時的に無効になっていることに気づいています。私はこれがフォーカスが別のビューに委任される理由を推測しています。この無効化を迂回したり回避したりするにはどうすればよいですか?

ご協力いただければ幸いです。

答えて

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でスピナーのために、このコードを使用してください:

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

どこに焦点が当てられますか?このようにそこからフォーカスを要求してみてください。

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

また、(うまくいけば、これは同じ問題で他の誰かを助けます)、私は次のことを実行することによって、この問題を解決することができましたspinner.setFocusable(true);

関連する問題