AlertDialog
約 10 個のコントロール (テキストと)があるボックスがありますTextView
。これらのコントロールはScrollView
withにありAlertDialog
、プラスとマイナスの 2 つのボタンがあります。私が抱えている問題は、ソフト キーボードがポップアップすると、2 つのボタンがキーボードの後ろに隠れてしまうことです。
内部ビューまたはダイアログ ボックスで再描画機能のようなものを探していました。以下は、私が話していることのスクリーンショットです。
AlertDialog
約 10 個のコントロール (テキストと)があるボックスがありますTextView
。これらのコントロールはScrollView
withにありAlertDialog
、プラスとマイナスの 2 つのボタンがあります。私が抱えている問題は、ソフト キーボードがポップアップすると、2 つのボタンがキーボードの後ろに隠れてしまうことです。
内部ビューまたはダイアログ ボックスで再描画機能のようなものを探していました。以下は、私が話していることのスクリーンショットです。
ダイアログが Dialog テーマの 1 つを使用するアクティビティである場合、アクティビティのパラメーターにadjustResize
フラグを設定することで、この動作に影響を与えることができます。windowSoftInputMode
私は使用しています:
android:windowSoftInputMode="adjustResize|stateHidden"
このフラグは通常のダイアログで引き続き使用できると思いますが、適用方法がわかりません。適切な親テーマを継承し、そのフラグも設定するカスタム テーマを使用して AlertDialog を作成する必要がある場合や、ContextThemeWrappers などを使用する必要がある場合があります。
または、 Window#setSoftInputModeを使用することもできます。
alertDialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
これを処理する最良の方法を見つけました。これはダイアログなので、コードは
alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
うまくいきません。
このコードの他に、このダイアログのダイアログ スタイルを設定する必要があります。スタイルは次のようになります。
<style name="DialogStyle" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<item name="android:windowFullscreen">false</item>
......
......
</style>
parent
属性はTheme.Black.NoTitleBar.Fullscreen
アクティビティのスタイルに似ていることに注意してください。属性android:windowFullScreen
は である必要がありますfalse
。
これで、ソフト キーボードが切り替わると、ダイアログのサイズが変更されます。
ダイアログのサイズを変更する必要はないかもしれません
EditTextにandroid:imeOptions = "actionNext"を追加します(最後を除くすべて)(キーボードに[次へ]ボタンを追加します-次のEditTextに移動します)
最後のEditTextにandroid:imeOptions = "actionDone"を追加します([完了]ボタン-キーボードを非表示にします)
これで、ユーザーはボタンをクリックできるようになります
コードでテキストボックスを作成する場合は、EditText#setImeOptions関数を使用します
HTH
キーボードをすぐに表示してサイズを調整するには:
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
}
});
ポップアップにする必要がありますか?ポップアップは非常に大きく見えるので、別のアクティビティとして使用したい場合があります。一般に、ポップアップは、完全なデータ入力フォームではなく、簡単な質問またはいくつかのオプションを含むステートメントを提供するために使用されます。大きなポップアップの背後はあまり見えないため、基本的なコントロールは公開されていません。