Re: [android-group-japan: 22423] EditTextフォーカス時のIMEの表示について

2,863 views
Skip to first unread message

しかじろう

unread,
Mar 23, 2013, 4:59:21 PM3/23/13
to android-group-japan
しかじろうです。

皆大好きやんざむさんのサイトに詳しくまとまってます。
Y.A.M の 雑記帳: Android 自動でソフトキーボードが出るのを防ぐ
http://y-anz-m.blogspot.jp/2010/05/android_17.html

お試しください。

2013/3/23 syou304 <gravit...@gmail.com>:
> はじめまして。
> いくら検索しても解決法が見つからないので、こちらで質問させていただきます。
>
> EditTextの中の文字列を、Activity内に配置したボタン等だけから制御したいと考えています。
> なので、カーソルの表示や範囲選択などの動作は必要なのですが、IMEは起動してほしくありません。
> そこで、「カーソルは表示されるけれども、タップしてもIMEは表示されない」という状態を作りたいのですが、うまくいきません。
>
> IMEの起動を止めるだけならxmlで
> android:focusable="false"
> とすればよいのですが、この場合カーソルも表示されなくなってしまいます。
>
> 他にもいくつか試しましたが、どれも理想の状態になりません。
> 見た目がそれっぽく動くだけでも十分ですので、どなたかいいやり方を教えていただけませんか?
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com
> にメールを送信します。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/android-group-japan?hl=ja
> からこのグループにアクセスしてください。
> その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
>
>



--
/**
* @name : しかじろう【渡辺 慎二郎】
* @blog : http://shikajiro.github.com/
* @mail : shik...@gmail.com
* @profile http://shikajiro.github.com/#/about/index
*/

syou304

unread,
Mar 23, 2013, 10:00:23 PM3/23/13
to android-g...@googlegroups.com
しかじろうさん、返信ありがとうございます。

エミュレータ(4.0)と実機(2.2, 4.2)で確認しましたが、これで止められるのはActivity起動直後のIMEだけでした。
それだけでなく、EditTextタッチ時にもIMEを非表示にしたいのです。

あと、xmlのandroid:editable="false"はカーソルも非表示になってしまいますし、deprecatedになったようです。
だからといって、android:inputType="none"にはOSがまだ対応していないようで、IMEは表示されてしまいます。

さらに、setOnTouchListener()を使い、View.OnTouchListener.onTouch()でtrueを返すと、
IMEは表示されませんが、タッチでカーソル移動をさせることもできなくなってしまいました。
最悪この手段をとりますが、操作性が格段に落ちるので、できればやりたくありません。
同じようなケースで、うまくできた方はいらっしゃいませんか?
Message has been deleted

syou304

unread,
Mar 24, 2013, 5:35:17 AM3/24/13
to android-g...@googlegroups.com
大野さん、返信ありがとうございます。

OSレベルまで調べていただき、大変感謝しております。
さっそく試したいところなのですが、諸事情によりしばらく開発環境から離れているので、
動作の確認はしばらく先になってしまいます。
なので、とりあえずお礼だけでも先に申し上げます。本当にありがとうございました。

syou304

unread,
Mar 29, 2013, 6:26:23 AM3/29/13
to android-g...@googlegroups.com
大野さんの投稿をもとに、以下の部分を書き換えて動作を確認しました。
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
InputMethodManager imm = getImm();// InputMethodManager.peekInstance();
imm.hideSoftInputFromWindow(getWindowToken(), 0);
//return false;
return true; 
}
return false; のままだと、続けて長押し時の動作に入ってしまうようです。 

実機(2.2, 4.2)での動作ですが、2.2と4.2で異なりました。
2.2でタップすると、IMEは表示されませんが、カーソル位置も動きません。長押しすると通常通りに近い動きをします。IMEは表示されません。
4.2でタップすると、IMEは表示されず、カーソル位置も動きます。長押しすると、IMEが一瞬表示されて、すぐに消えます。他の動作は通常通りです。

同じOSのバージョンでも、動作は異なるかもしれません。

完全に理想通りとはいきませんでしたが、これでいきたいと思います。みなさんありがとうございました。
Reply all
Reply to author
Forward
0 new messages