アプリ全体またはwebview内部のソフトウェアキーボードの無効化

3,685 views
Skip to first unread message

hagiyaki

unread,
Sep 12, 2011, 9:32:19 AM9/12/11
to 日本Androidの会
質問させてください。android3.0で開発しています。
WebView内のテキストボックスを選択したときに
ソフトキーボードを表示しないようにしたいです。

EditTextでは
editText.setRawInputType(InputType.TYPE_NULL);
として無効にできました。
これをWebViewの内部で実現したいのですができますでしょうか?

現在は
【質問】ソフトウェアキーボード収納の検知方法
https://groups.google.com/group/android-group-japan/browse_thread/thread/902e3e4a7b848da3/37bfc9d5e6854a9b?hl=ja

ソフトキーボードの表示を検知してレイアウトを変更する - superdry memorandum :-D
http://d.hatena.ne.jp/Superdry/20110715/1310754502

を参考にソフトキーボードが表示が検知されたらすぐに閉じるようにしています。
しかし一度表示されてから閉じるまでがしばらく時間がかかってしまうことがあります。
EditTextの用に無効化する方法があれば教えていただきたいです。

また、もしアプリ全体の設定としてソフトキーボードを無効化する設定がありましたら教えていただきたいです。

よろしくお願いします。

Aska

unread,
Sep 13, 2011, 11:25:28 AM9/13/11
to 日本Androidの会
askaです.

試してませんが, yanzmさんの以下のページが参考になりませんか?
http://y-anz-m.blogspot.com/2010/05/android_17.html

On 9月12日, 午後10:32, hagiyaki <hagino0...@gmail.com> wrote:
> 質問させてください。android3.0で開発しています。
> WebView内のテキストボックスを選択したときに
> ソフトキーボードを表示しないようにしたいです。
>
> EditTextでは
> editText.setRawInputType(InputType.TYPE_NULL);
> として無効にできました。
> これをWebViewの内部で実現したいのですができますでしょうか?
>
> 現在は
> 【質問】ソフトウェアキーボード収納の検知方法
> https://groups.google.com/group/android-group-japan/browse_thread/thr...
>
> ソフトキーボードの表示を検知してレイアウトを変更する - superdry memorandum :-Dhttp://d.hatena.ne.jp/Superdry/20110715/1310754502

hagiyaki

unread,
Sep 15, 2011, 3:53:21 AM9/15/11
to 日本Androidの会
askaさんへ:

お世話になります。
hagiyakiです

返信ありがとうございます。
返すのが遅くなり申し訳ありません。

紹介していただいた方法はEditTextでActivity起動時にソフトキーボードがでるのを
防ぐものだと認識しており、EditTextに対して一度実装いたしました。

その後
editText.setRawInputType(InputType.TYPE_NULL);
とすることでEditTextのキーボード自体を無効化することができることがわかりました。
今回は
editText.setRawInputType(InputType.TYPE_NULL);
と同様のことをWebView内の簡易ブラウザでやりたいと考えています。

どなたか情報ありましたらよろしくお願い致しま

On 9月14日, 午前12:25, Aska <moonlight.a...@gmail.com> wrote:
> askaです.
>
> 試してませんが, yanzmさんの以下のページが参考になりませんか?http://y-anz-m.blogspot.com/2010/05/android_17.html

Yuki Anzai

unread,
Sep 15, 2011, 5:30:45 AM9/15/11
to android-g...@googlegroups.com
yanzmことあんざいです。

 名前がでたのでちょっとコメントします。

 WebView のソースをみると ソフトキーボードを出してるのは
 http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java/android/webkit/WebView.java#3902
 あたりの displaySoftKeyboard() と hideSoftKeyboard() あたりでしょう。

 これらのメソッドがどこから呼ばれているかというと、
 http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java/android/webkit/WebView.java#6995
 とか
 http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java/android/webkit/WebView.java#7169
 で、これは PrivateHandler という Handler を継承した WebView の内部クラスの中です。

 で、この PrivateHandler に REQUEST_KEYBOARD とか
 REQUEST_KEYBOARD_WITH_SELECTION_MSG_IN の message が来たときにキーボード関係の
 処理をしているのですが、この message は
 http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java/android/webkit/WebViewCore.java#2321
 この WebViewCore というクラスの requestKeyboardWithSelection() と requestKeyboard() から
 呼ばれてます。

 これらのメソッドにコメントで called by JNI と書いてあります。
 つまり、WebView でソフトキーボードを出す処理は JNI から来ているということなので、
 制御するのは難しいんじゃないかなー。
 displaySoftKeyboard() が protected なら話がはやいんですけど、残念ながら private なので
 Override はできません。

2011/9/15 hagiyaki <hagin...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

--
あんざい ゆき
anzai...@gmail.com
twitter : @yanzm
Y.A.Mの雑記帳 http://y-anz-m.blogspot.com/

hagiyaki

unread,
Sep 15, 2011, 10:47:48 AM9/15/11
to 日本Androidの会
あんざいさんへ:

hagiyakiです。
お世話になります。
返信有難う御座います。
ブログ、たくさん参考にさせていただいています。

難しいですか。。。
僕もCustomWebViewを作ればいいのではと思い
displaySoftKeyboard()をオーバーライドしようと思ったらprivateだったので行き詰まり
全体で無効化するなどなにか違う方法があるのではと思いここで質問させて頂きました。

WebCoreViewで呼ばれているところまでは追えてなかったので
調べて頂きありがとうございます。

自分たちだけで使うアプリなのでこのまま
ソフトウェアキーボードの表示を検知しすぐ閉じるという風にしていこうと思います。

ハードウェアキーボードがついている機種ではソフトキーボードの動きはどうなっているんでしょうか
EditTextやWebViewの内部でソフトキーボードが呼ばれても表示しないようになっているんでしょうか
もしご存知であれば教えていただきたいです。

もしそうであればハードキーがあると認識させることはできないかと考えているのですが。。。
やはり難しいでしょうか


On 9月15日, 午後6:30, Yuki Anzai <anzai.y...@gmail.com> wrote:
> yanzmことあんざいです。
>
>  名前がでたのでちょっとコメントします。
>
>  WebView のソースをみると ソフトキーボードを出してるのは
>  http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java...
>  あたりの displaySoftKeyboard() と hideSoftKeyboard() あたりでしょう。
>
>  これらのメソッドがどこから呼ばれているかというと、
>  http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java...
>  とか
>  http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java...
>  で、これは PrivateHandler という Handler を継承した WebView の内部クラスの中です。
>
>  で、この PrivateHandler に REQUEST_KEYBOARD とか
>  REQUEST_KEYBOARD_WITH_SELECTION_MSG_IN の message が来たときにキーボード関係の
>  処理をしているのですが、この message は
>  http://tools.oesf.biz/android-2.3_r1.0/xref/frameworks/base/core/java...
>  この WebViewCore というクラスの requestKeyboardWithSelection() と requestKeyboard() から
>  呼ばれてます。
>
>  これらのメソッドにコメントで called by JNI と書いてあります。
>  つまり、WebView でソフトキーボードを出す処理は JNI から来ているということなので、
>  制御するのは難しいんじゃないかなー。
>  displaySoftKeyboard() が protected なら話がはやいんですけど、残念ながら private なので
>  Override はできません。
>
> 2011/9/15 hagiyaki <hagino0...@gmail.com>:
> anzai.y...@gmail.com
> twitter : @yanzm
> Y.A.Mの雑記帳http://y-anz-m.blogspot.com/
Reply all
Reply to author
Forward
0 new messages