キーボードを閉じる処理は、このブログで何度も書いている。
http://blog.zaq.ne.jp/oboe2uran/article/788/
http://blog.zaq.ne.jp/oboe2uran/article/785/
http://blog.zaq.ne.jp/oboe2uran/article/739/
http://blog.zaq.ne.jp/oboe2uran/article/848/
それでも、再びここにメモとして書く。
キーボードを閉じるには、InputMethodManager で hideSoftInputFromWindow を実行するか、
android.view.Window で、setSoftInputMode で隠すように指定するかどちらかで行う。
後者の方は簡潔で、
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
で済む。
InputMethodManager の方法は、表示している任意の View を指定して、
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
あるいは、何等かのアクションでは、 InputMethodManager.RESULT_UNCHANGED_SHOWN を指定する。
// EditText でキー入力後の [Done]キー押下、[ENTER]押下でソフトキーボードを閉じる場合
final EditText editText = (EditText)findViewById(R.id.editText);
editText.setOnKeyListener(new View.OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event){
if (event.getAction()==KeyEvent.ACTION_DOWN && keyCode==KeyEvent.KEYCODE_ENTER){
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
return true;
}
return false;
}
});
しかし、android.widget.NumberPicker で数字をタッチしてキーボードが表示されないようにする方法が見つからない