私のアプリケーションでは、キーボードを表示/非表示にして、ユーザーがカスタム ウィジェットを操作できるようにしています。EditText
フォーカスがあるものはありません。
私が抱えている問題は、キーボードが表示されたときにレイアウトのサイズを調整したいということです。これは通常android:windowSoftInputMode="adjustResize"
、マニフェストのアクティビティ タグに追加することによって行われます。これは、デバイス (現在 2.2 を実行している 7 インチの Galaxy Tab) が縦向きモードの場合に機能しますが、横向きに回転すると、レイアウトのサイズが調整されず、キーボードが画面の半分を隠します。
ここで、代わりに を持つ EditView を使用する android:imeOptions="flagNoExtractUi"
と、レイアウトのサイズが適切に変更されることに気付きました。ウィンドウトークンを介して表示されるキーボードで同じ効果を達成する方法はありますか?
非表示の EditView を画面に追加することは、実装がかなり大幅に変更されるため、理想的ではありません。
参考までに、カスタム ウィジェット内でキーボードを表示するために使用するコードを次に示します。
mInputMethod = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
mInputMethod.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
requestFocus();
setOnKeyListener(this);
そして隠すこと。
mInputMethod.hideSoftInputFromWindow(getWindowToken(), 0);
setOnKeyListener(null);