(この場合も、あくまでも画面に「←」「→」ボタンなどを用意して移動させるなどのケースを想定しており、いずれにせよ、タッチ位置によるカーソル移動はできませんのでご注意を), 問題その1で書いた、範囲選択ができないとか、コピペメニューが出てこないとかは、android:inputTypeやsetInputTypeを特に指定していなかった時や、android:inputType="textMultiLine"を指定していた時の話で、android:inputType="text" など、SingleLineのInputTypeを指定している時は、範囲選択ができてしまいます。だけでなく、選択画面に遷移した際にキーボードが表示されてしまいます。, 左が「方法その2」のコードそのままだった場合、右が「問題その1」で書いたカーソル位置を固定する処理を入れている場合の画面。, 何故、シングルラインとマルチラインで、こんなところの挙動が変わってしまうのかは不明。, ちなみに、android:inputType="passwordText"などのパスワードタイプを指定していた時はまた挙動が違っていて、範囲選択(というか全選択?)はできてしまいますがキーボードは表示されません。また、カーソルの移動もできません。, この場合は、ロングタップを無効にしてしまえば、マルチラインの時とほぼ同じ挙動(カーソル動かない、範囲選択できない、コピペできない)で動かすことができます。, 何故、InputTypeのモードによってこんなにも挙動が変わってしまうのか、、、。, 結局どっちの方法がいいのか? Why not register and get more from Qiita? ソフトキーボードを非表示にして、アプリ画面でボタンを用意、ボタンからの入力しか受け付けないような画面(具体的には電卓アプリのような画面)を考えています。 その時のままだったなら、こんなに苦労しなくても済んだのに。。。, 今となってはAPI10以下をサポートすることもないだろうし、if (Build.VERSION.SDK_INT >= 11)はなくてもいいかな?   Android 6.0 (Marshmallow), カーソルが出なくてよく、単にキーボード表示を抑止したいだけなら、下記のように簡単に抑止できます。, ちなみに、Android 2.x の時代は、この辺のやり方でカーソルも表示されていたみたいです。 if文の中の方も、setRawInputTypeの方は、InputType.TYPE_NULL でないことが大事で(TYPE_NULLだとカーソルがでない)、それ以外であればなんでも良いっぽいようなコメントも見かけ、実質的には、setTextIsSelectable(true)が肝みたいです。 Android6.0以上がデフォルトになるまで時代を待つか、それ未満のバージョンは対象外としてしまうか、コピペは許可しておいてInputFilterなどで入力内容を制限するか、カーソル移動はできないものと割り切って「方法その2」で対処するか。 上述の通り、「方法その2」には幾つか問題があるので、「方法その1」、、、と言いたいところなのですが、実はそうとも言えず。, 結論から言うと、「(タップでの)カーソルの移動やコピペがしたい」という場合は、「方法その1」がいいですが(というかそれしか選択肢がないですが)、「カーソル移動ができなくていい、コピペもできなくていい(ていうか、むしろ出来ない方がいい!)」という場合には、「方法その2」の方がいいです。, というのも、後述しますが、「方法その1」でコピペのアクションモードを完全に抑止することが極めて困難だからです(というか、結局、私が調べた狭い範囲では完全解決させることができませんでした、、、)。, ちなみに、では、カーソル移動やコピペは出来ない方がいいけど、マルチラインにはしたくないという場合は? android キーボード表示 レイアウト (2) 私はlistviewと下に送信メッセージでアクティビティを作成しようとしています。 問題は、キーボードが表示されているときに、下部のコンテンツを押すのではなく、単に隠していることです。

けれども「方法その2」では(タップでの)カーソル移動もできなくなってしまうので、「方法その1」を採用した上で、コピペだけを抑止したい。, ということで、散々調べたのですが、完全解決には至らず。 (逆に、昔のメモでは「その1」はうまくいかなかったとあったのだけれど、今回、改めて試してみたところ、何の問題もなく動作してしまった。。。何か見落としがあるのか、昔の手順が何かミスっていたのか、、、)。, テキストエリアをタップ(ダブルタップ・ロングタップを含む)しても、カーソル移動ができませんし、範囲選択もできません。InputType.TYPE_NULL の状態で onTouchEventを読んだ時点で、カーソル位置がクリアされてれしまうためだと思われます。, が、これが本当に問題なのかと言われると、入力内容を制限するためにキーボードを非表示にしているという観点からすると、想定外の入力がなされる可能性が減るという意味で、デメリットではなくむしろメリットになるケースもあるのではないかと。ケースバイケースですね(実際、私のアプリでは、むしろカーソルが勝手に動かされると困るので、問題にはなっていません)。, ただ、このままだとカーソル位置は先頭で固定されてしまいますので、末尾に移動しておきましょう。, ソフトキーボードやタッチ以外の方法でカーソル移動を許可するなどで、末尾以外にカーソルがある可能性がある場合は、InputType同様バックアップ変数に退避しておき、後で戻す方法で。

By following users and tags, you can catch up information on technical fields that you are interested in as a whole, By "stocking" the articles you like, you can search right away. What is going on with this article? どうも XMLで指定する android:inputType="none" は、setInputType(InputType.TYPE_NULL)と等価ではないみたいですね。, というか、android:inputType="none"を指定して getInputTypeの値をデバッグで追っていったら、何も指定しなかった時と同じ、すなわちandroid:inputType="textMultiLine"のときと同じ値がセットされていたですよ(Hex:0x20001 or Decimal: 131073 InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE)。, これは仕様なのかバグなのか、、、。なんともすっきりしない話です。

(こっちは、API11から使えます)。 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); getWindow().setSoftInputMode(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

単にキーボードを非表示にするだけならば簡単なのだけれども、これがまた一筋縄ではいかない話でした。, Compile SDK API レベル: 24

Androidスマホのキーボードの切り替えやキーボードキー表示の変更方法、キーボードの背景画像を変更できるおすすめアプリなどを紹介しています。スマホのキーボード設定を見直して、快適に使いたい人はぜひ参考にしてください。 Compile SDK API レベル: 24 シミュレータ: Android 5.1(Lollipop) Android 6.0 (Marshmallow) カーソルが出なくてもいいなら シミュレータ:

RelativeLayoutで下部にボタンを配置したレイアウトでソフトキーボード表示をすると左画のように下部のボタンがソフトキーボードの上にきてしまいます。なぜ?, こちらの意図するところではないのでソフトキーボードの裏というかレイアウトは元通り右画のように固定してて欲しい!, 下部にボタンを配置して設定部分の上部は表示が入りきれなかった場合に備えてスクロールビューとしました。, どうやらこのケースでは適用したスクロールビューが悪さをしているみたいです。スクロールビューを外して実験したら押し上がらなかったので犯人確定ですね。, isScrollContainerはソフトキーボードが表示されたときスペースを空けるためにViewをリサイズするかどうかの設定のようです。デフォルトがtrueのようでリサイズされていたってことですね。, スクロールビューではなくListViewを使用している場合でも同様の現象が起きます。, これもレイアウトXMLのListViewタグ内に android:isScrollContainer="false" を入れると解決できました。, 最初、検索で見つかるadjustPanやfitsSystemWindowsやらを参考にさせて頂いたのですが適用しても全くダメで随分さまよいました(^^;, 画面遷移した際に自動でソフトキーボードが表示されないようにjavaのコードに下記を入れるというのがあります。, ひょっとしたらこれに何かないかなぁと探していたらそれっぽいワードがあったので調べもせず適用してみました。, FLAG_KEEP_SCREEN_ONは画面の自動消灯をさせないようにする設定みたいですがこれで何故動作が変わる??はい。よく分かりません(笑), ソフトキーボードが表示されている間は画面の自動消灯が行われないことになるので入力中の寝落ちは無い(…ではよいのか?)。, なら勘でやるなって(^^; こんなバカなこともやってみた記録として残しておきます。. Android(アンドロイド)スマホの日本語入力キーボードはAndroid(アンドロイド)OSの開発元Googleから提供されている以外に実にいろいろなキーボードがあります。本稿では、それらの切替方法と戻せないときの対処法を説明しています。 Help us understand the problem. android:inputType="textMultiLine" にしておいた上で、android:maxLines="1",android:scrollHorizontally:"true" などの設定にして見た目だけ一行っぽくする。あとは、入力監視して、改行が入らないようにする(入力手段が限られるはずなので、割り切れば監視そのものを省略してしまうというのも手?)とかですかね。, 画面上の入力欄がこれしかない、または全てキーボードを表示させないパターンであれば問題はないけれども、通常のEditTextと共存する場合など、既にキーボードが出ている状態で該当のEditTextにフォーカス遷移してくると、(当然ながら)どちらの方法でもキーボードが表示されたままで入力もできてしまいまう。 単にキーボードを非表示にするだけならば簡単なのだけれども、これがまた一筋縄ではいかない話でした。 確認環境. EditTextで、特定の内容しか入力を受け付けたくないようなケース。 質問: q: 入力エリアがキーボードに隠れる 文字の入力エリアをタップすると、画面が上に移動し、同時にキーボードが現れます。 しかし、サイトによっては入力エリアが上に移動せず、キーボードの後ろに留まったままになってしまいます。 私はlistviewと下に送信メッセージでアクティビティを作成しようとしています。 問題は、キーボードが表示されているときに、下部のコンテンツを押すのではなく、単に隠していることです。 私はadjustPanを使ってみましたが、ホールビューを押し上げました(リストビューのトップの要素を見る方法がなく、またアクションバーが消える)。, WhatsAppまたはLineを見ると、リストの最後の項目が画面の最下部に表示されると、キーボードがリストビューをプッシュアップします(アクションバーや最初の要素を画面外に出すことはありません) )、リストの最後の項目が表示されていないとき(スクロールアップした後)、キーボードは下のリストに隠れています(通常のadjustResize)。, editTextはListViewの一部ではなく、下部にLinearLayoutが配置されています。 キーボードが表示されると、ListViewは次のようになります(項目3と4はキーボードによって隠されています)。, 私はアンドロイドを試しました:windowSoftInputMode = "adjustPan"。結果は効果的にアイテム3と4が押し上げられ、キーボードでは隠されていません。 問題はそれがリストビューをプッシュするが、それを画面からプッシュするので、actionBarは消え、上にスクロールしようとしても、キーボードで項目1と項目2を見ることはできません。, android - 隠れる - キーボードがadjustPanなしで表示されるときにListViewをプッシュする.