入力を含むダイアログボックスがあり、ソフトキーボード、現在のコードを自動的にポップアップする必要があります:
final EditText input = new EditText(this);
final AlertDialog dialog = new AlertDialog.Builder(ScActivity.this)
.setMessage(message)
.setView(input).setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(input.getWindowToken(), 0);
// do positive stuff
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(input.getWindowToken(), 0);
}
}).create();
input.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
}
}
});
dialog.show();
input.requestFocus();
これは、1 つの動作を除いて正常に機能します。このウィンドウをランドスケープモードで初めて表示すると、ダイアログボックスがソフトキーボード用のスペースを確保しようとしているかのように飛び上がり、十分なスペースがないことに気づき、下にジャンプして、フルスクリーンの ime キーボードが表示されます (テキスト入力で)。
グリッチのように見えます。それと一緒に暮らしたくない。タイマーで物事をやって、別の順序で物事をやろうとしました。最初の後に連続するたびに、キーボードが一番上に表示され、ジャンプすることはありません。回避策を知っている人はいますか?ソフトキーボードを横向きモードで全画面表示にしたいだけです(縦向きモードには、ダイアログボックスが上に移動して表示されるのに十分なスペースがあります.
ありがとう