ソフト・キーボードの画面表示


20140311potrait 20140311potrait_default

通常は、ソフト・キーボードは、元の画面の下側を隠すように、表示されます。
これは Pan and Scan と呼ばれるモードです。

下側にボタンなどを配置しているときは、ボタンが隠れて不便なときがあります。
AndroidManifest で Resize モードを設定すると、レイアウトファイルの layout_weight のところが調整されて、全体を表示することができます。

AndroidManifest.xml

<activity
	android:name=".ResizeActivity"
	android:windowSoftInputMode="adjustResize" >

layout/xxx.xml

<TextView 
	android:layout_width="fill_parent"
 	android:layout_height="0dp"
	android:layout_weight="1" />

20140311potrait_resize

しかし、横向き (landscape) のときは、常に画面全体にソフト・キーボードが表示される Full Screen モードになります。

20140311landscape20140311landscape_default

EditText に IME_FLAG_NO_FULLSCREEN を設定すると、Full Screen モードが解除されます。
なお、この設定は EditText を初期化するときに有効になるようです。
いったん EditText が表示されたあとで、設定しても効かなかったです。

mEditText.setImeOptions( 
	EditorInfo.IME_FLAG_NO_FULLSCREEN |
	EditorInfo.IME_FLAG_NO_EXTRACT_UI );

20140311landscape_no_fullscreen

サンプルコードは google code で公開しています。

参考
Onscreen Input Methods – Y.A.M の 雑記帳
オンスクリーン入力方式 ( IME ) – ソフトウェア技術ドキュメントを勝手に翻訳
LandscapeモードでのIMEの件 – アドエス小物日記


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です