ハードキーボードがある場合でもtrueと評価するには、InputMethodServiceメソッドonEvaluateInputViewShown()をオーバーライドする必要があります。onEvaluateInputShown()およびInputMethodServiceのソフト入力ビューセクションを参照してください。このメソッドをオーバーライドするには、独自のカスタムInputMethodServiceクラスを作成してみてください。
編集:onEvaluateInputShown()のソースが役立つはずです。解決策は、InputMethodServiceを拡張する独自のクラスを作成し、数行しかないこの1つのメソッドをオーバーライドするのと同じくらい簡単である必要があります。マニフェストにもカスタムサービスを追加してください。
ソースから:
「これをオーバーライドして、ソフト入力領域をユーザーに表示するタイミングを制御します。デフォルトの実装では、ハードキーボードがないか、キーボードが非表示になっている場合にのみ入力ビューが表示されます。これを変更する場合は、updateInputViewShownを呼び出す必要があります。 ()戻り値が変更されて再評価および適用される可能性がある場合は、いつでもご自身で。」
public boolean onEvaluateInputViewShown() {
Configuration config = getResources().getConfiguration();
return config.keyboard == Configuration.KEYBOARD_NOKEYS
|| config.hardKeyboardHidden == Configuration.KEYBOARDHIDDEN_YES;
}
確認できる構成は次のとおりです。Configuration.KEYBOARD_NOKEYSは、ハードウェアキーボードなしに対応します。ハードウェアキーボードがない場合、またはハードウェアキーボードが非表示になっている場合、このメソッドはtrueを返します(ソフトキーボードを表示する必要があります)。これらのチェックを両方とも削除し、単にtrueを返すと、ハードウェアキーボードが接続されている場合でも、ソフトウェアキーボードが表示されます。
試してください(テストされていません):
public boolean onEvaluateInputViewShown() {
return true;
}
この戻り値は変更されないため、updateInputViewShown()を自分で呼び出す必要はありません。このメソッドを別の方法で変更する場合は、この詳細を忘れないでください。