Android フォーカスを移動時のキーボードを制御する

フォーカスの移動時の制御
EditTextにフォーカスが移ったとき、フォーカスが外れたときにソフトキーボードを表示、非表示したいことがあると思います。その際にはEditTextのオブジェクトに対してsetOnFocusChangeListenerを設定してやることでフォーカスの移動で動作を制御してやることができます。このときInputMethodManagerオブジェクトを利用することで表示・非表示を行います。

 

public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  EditText ed = (EditText)findViewById(R.id.ed);

  ed.setOnFocusChangeListener(new View.OnFocusChangeListener() {

    @Override

    public void onFocusChange(View v, boolean hasFocus) {

      InputMethodManager inputMethodManager =                        (InputMethodManager) getSystemService Context.INPUT_METHOD_SERVICE);

      // フォーカスを受け取ったとき

      if(hasFocus){

        // ソフトキーボードを表示する

        inputMethodManager.showSoftInput(v,             InputMethodManager.SHOW_FORCED);

      }

      // フォーカスが外れたとき

      else{

      // ソフトキーボードを閉じる

      inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(),0);

    }

  }

});