質問: 前提・実現したいこと EditText をタップしたときにソフトキーボードを表示しないようにしたいのです。 具体的には、計算機アプリで、式の表示画面をEditTextで作成し、そのEditTextには、自分で作ったボタン以外の文字は一切入力できないようにします。 また、好きな位置に数字などを入力できるようにするために、Text ViewではなくEditTextを使いたいです。 ですので、EditTextをタップすることでカーソル位置は変わりつつ(フォーカスはあたったままで)、ソフトキーボードを表示しないようにしたいと考えています。 実際に、ZenUIの電卓アプリや、万能計算機というアプリでは、そのような仕様がなされています。 試したこと インターネットで色々調べたのですが、Activity起動時にソフトキーボードを非表示にする方法はいくつか見つけましたが、Activity起動後にEditTextをタップした時にソフトキーボードは表示されてしまいます。 具体的には、 http://qiita.com/hishida/items/8bf1aa28ef62ef22a7f9 に載っていることを試しました。 また、EditTextのfocusableをfalseにするなど、編集不可の状態にしてしまうとカーソルが表示されません。 また、EditTextにオンタッチリスナーを設定し、MOTION_DOWNやMOTION_UPなどでソフトキーボードを非表示にするコードを書き、return false にしても、オンタッチリスナーのあとにソフトキーボードが表示されるので、ソフトキーボードが閉じた後にまたソフトキーボードが立ち上がります。 また、オンタッチリスナーでreturn true にすると、EditTextのメソッド自体が呼ばれないのだと思いますが、ソフトキーボードは表示されないのですが、カーソルは最初の位置にとどまったままで、タップした位置にカーソルは移動しません。 なお、xmlにEditTextのみという最小構成で試してみてはいるのですが、editableをfalseにすると、ソフトキーボードは表示されなくなるのですが、カーソルは消えてしまいます。
回答: EditTextにオンクリックリスナーをセットし その中に InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(input_board.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); を書くことで、希望通りに動きました!