EditTextからのフォーカスを外して、ソフトウエアキーボード消したい

4,365 views
Skip to first unread message

パクチー

unread,
Aug 12, 2009, 4:07:42 AM8/12/09
to Android-SDK-Japan
こんにちわ、パクチーです。

現在、画面から入力した検索条件を元にテーブルを検索して、結果をリストで表示するプログラムを作成しています。
検索条件の入力はEditText
リストはListView
で作成しています。
一覧は表示できるようになったのですが、1つ問題があります。
検索条件を入力したEditTextにフォーカスが残ったままになっています。
そのため、画面上にソフトウエアキーボードが表示されたままになっています。
検索した一覧がソフトウエアキーボードで隠れて見えません。

検索ボタンを押した時点でフォーカスを検索条件の入力エリア(EditText)から外して
ソフトウエアキーボードを消したいのですが?
どうすれば良いでしょうか?
検索ボタンに対して、
setFocusable(true);
setFocusableInTouchMode(true);
を実行しましたが、結果は同じでした。

解決方法をご存知の方、お手数ですが、回答よろしくお願い致します。

pccra...@gmail.com

unread,
Aug 13, 2009, 6:32:28 AM8/13/09
to Android-SDK-Japan
ピーシークラフトです。

未検証ですが
インプットメソッドマネージャを取得して

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

inputMethodManager.hideSoftInputFromInputMethod(token, flags)

inputMethodManager.hideSoftInputFromWindow(windowToken, flags)

あたりでできると思います。

また、

Keyboard.KEYCODE_CANCEL

を送信してもキーボードを終了させることができます。
(ただし、対応していないキーボードもあるかもしれません。)

パクチー

unread,
Aug 13, 2009, 9:09:39 AM8/13/09
to Android-SDK-Japan
こんばんわ、パクチーです。

●ピーシークラフトさま

教えていただいた方法でソフトウエアキーボードを消すことが出来ました。

public void onClick(View v) {
       //検索ボタンの押下
       if(v == vSearchBtn){
InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0);

       }
flagsについては、HIDE_IMPLICIT_ONLYを設定しようとしましたが、定義が見つかりませんでした。
APIマニュアルに
-------------------
flags Provides additional operating flags.
Currently may be 0 or have the HIDE_IMPLICIT_ONLY, HIDE_NOT_ALWAYS bit
set.
-------------------
とありましたので、とりあえず0を代入しています。

これにて、検索ボタンを押下した時にソフトウエアキーボードを消すことが出来ました。
再度EditTextをタップしたら、再度ソフトウエアキーボードが表示されましたので、禁止ではなく
必要なときだけソフトウエアキーボードを表示できるようになりました。

ありがとうございました。
Reply all
Reply to author
Forward
0 new messages