以前の記事でフォーカスを初期状態で当てない方法をご紹介しました。
今回は、EditTextに記入をした後、ソフトキーボードを非表示にする方法です。
Backキーをタップすれば隠すこともできますが、あまりこれは良い方法ではありません。
以下のようにコードを記述します。
public class MainActivity extends AppCompatActivity { private EditText editText; private View view; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText)findViewById(R.id.editText); button = (Button)findViewById(R.id.button); view = this.getCurrentFocus(); // 1 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (view != null) { editText.clearFocus(); InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); } } }); } }
1でフォーカスされているビューを取得します。
buttonをタップした際に、フォーカスされているビュー(この場合はEditTextになります)がnullではない場合に、ソフトキーボードを隠すという処理です。
これで目的通りになったかと思います。
もちろんViewを定義せずにif(editText != null)としても目的は達成できますが、この場合はEditViewが1つだけのときのみです。ですから今回は全てのスーパークラスであるViewを用いて記述しています。