Help us understand the problem. What is going on with this article?

EditTextをタップした時に、ソフトキーボードを表示しない

More than 3 years have passed since last update.

EditText をタップしたときにソフトキーボードを表示しないようにしたいのです。

具体的には、計算機アプリで、式の表示画面をEditTextで作成し、そのEditTextには、自分で作ったボタン以外の文字は一切入力できないようにします。

また、好きな位置に数字などを入力できるようにするために、Text ViewではなくEditTextを使いたいです。
ですので、EditTextをタップすることで文字のタップ位置にカーソル位置は変わりつつ(フォーカスはあたったままで)、ソフトキーボードを表示しないようにしたいと考えています。

実際に、ZenUIの電卓アプリや、万能計算機というアプリでは、そのような仕様がなされています。

試したこと

インターネットで色々調べたのですが、Activity起動時にソフトキーボードを非表示にする方法はいくつか見つけましたが、Activity起動後にEditTextをタップした時にソフトキーボードは表示されてしまいます。
具体的には、
http://qiita.com/hishida/items/8bf1aa28ef62ef22a7f9
に載っていることを試しました。

また、EditTextのfocusableをfalseにするなど、編集不可の状態にしてしまうとカーソルが表示されません。
EditTextのeditableをfalseにしても編集不可の状態になってcursorが表示されません。

また、EditTextにオンタッチリスナーを設定し、MOTION_DOWNやMOTION_UPなどでソフトキーボードを非表示にするコードを書き、return false
にしても、オンタッチリスナーのあとにソフトキーボードが表示されるので、ソフトキーボードが閉じた後にまたソフトキーボードが立ち上がります。

また、オンタッチリスナーでreturn true にすると、EditTextのメソッド自体が呼ばれないのだと思いますが、ソフトキーボードは表示されないのですが、カーソルは最初の位置にとどまったままで、タップした位置にカーソルは移動しません。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away