こんにちは。
無事にうみねこマラソン10キロ完走することができました、mukaiyachiです。
前回に引き続き、AndroidのEditTextのちょっとしたTipsについて紹介していきます。
今回は「エンターキーが押されたらキーボードを閉じる」方法について紹介します。
前回も書いたようにAndroidのソフトキーボードは通常、ハードウェアのバックボタンを押さないと閉じられません。
場合によってはエンターキーを押したらキーボードが閉じられる方が直感的で便利な気がします。
また、キーボードのエンターキーを押したら、検索など何かしらの処理を行うときなどはキーボードは自動的に閉じたほうが良いと思います。
キーボードのエンターキーが押されたことを検知するには、EditTextにリスナーをセットしてキーが押されたイベントを取得します。
まずはレイアウトファイルをつくります。
EditTextがある簡単な画面です。
■レイアウトファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mainLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> |
次はアクティビティ側です。
■アクティビティ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
public class HelloActivity extends Activity { private InputMethodManager inputMethodManager; private LinearLayout mainLayout; private EditText editText @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //キーボードを閉じたいEditTextオブジェクト editText = (EditText) findViewById(R.id.editText); //画面全体のレイアウト mainLayout = (LinearLayout)findViewById(R.id.mainLayout); //キーボード表示を制御するためのオブジェクト inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); //EditTextにリスナーをセット editText.setOnKeyListener(new OnKeyListener() { //コールバックとしてonKey()メソッドを定義 @Override public boolean onKey(View v, int keyCode, KeyEvent event) { //イベントを取得するタイミングには、ボタンが押されてなおかつエンターキーだったときを指定 if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){ //キーボードを閉じる inputMethodManager.hideSoftInputFromWindow(editText.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN); return true; } return false; } }); } } |
以上となります。
これでキーボードのエンターキーを押したら閉じられるようになります。
ぜひお試しください。