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

閲覧: 4,369 回
最初の未読メッセージにスキップ

パクチー

未読、
2009/08/12 4:07:422009/08/12
To: Android-SDK-Japan
こんにちわ、パクチーです。

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

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

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

pccra...@gmail.com

未読、
2009/08/13 6:32:282009/08/13
To: Android-SDK-Japan
ピーシークラフトです。

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

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

inputMethodManager.hideSoftInputFromInputMethod(token, flags)

inputMethodManager.hideSoftInputFromWindow(windowToken, flags)

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

また、

Keyboard.KEYCODE_CANCEL

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

パクチー

未読、
2009/08/13 9:09:392009/08/13
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をタップしたら、再度ソフトウエアキーボードが表示されましたので、禁止ではなく
必要なときだけソフトウエアキーボードを表示できるようになりました。

ありがとうございました。
全員に返信
投稿者に返信
転送
新着メール 0 件