私は Android Sample SoftKeyboardに取り組んできました。それはかなり理にかなっていますが、私は問題に遭遇しました。キーボードは画面の約 88% (540 ピクセルの画面の 480 ピクセル) しか占有しません。
どうやら 2.3.4 に問題がある Atrix 4G で開発していますが、qHD 画面を備えた元のデバイスでは、ほとんどのキーボードが正しく表示されません (これはしばらくの間、CM7 でも問題でした)。 )。私が見つけることができるすべてのキーボードは修正されていますが、どうやってこれを達成したのかはわかりません。
キーボードは、エミュレーター (画面幅 480 ピクセル) で期待するとおりに表示されます。デバイス自体が奇妙になるだけです。
IME の幅を制御するように見えるサンプルのコードを以下に示しますが、画面解像度の明示的な幅に設定しても問題は解決しません。
/**
* This is the point where you can do all of your UI initialization. It
* is called after creation and any configuration change.
*/
@Override public void onInitializeInterface() {
if (mQwertyKeyboard != null) {
// Configuration changes can happen after the keyboard gets recreated,
// so we need to be able to re-build the keyboards if the available
// space has changed.
int displayWidth = getMaxWidth();
if (displayWidth == mLastDisplayWidth) return;
mLastDisplayWidth = displayWidth;
}
mQwertyKeyboard = new LatinKeyboard(this, R.xml.qwerty);
mSymbolsKeyboard = new LatinKeyboard(this, R.xml.symbols);
mSymbolsShiftedKeyboard = new LatinKeyboard(this, R.xml.symbols_shift);
}
編集:少なくとも一時的な回避策が見つかりました。互換モードを無効にすると、アプリが適切にレンダリングされます...ただし、アプリは正しい API バージョン (Gingerbread/10) を使用してデプロイされるため、これが必要な理由はわかりません。