1

入力を含むダイアログボックスがあり、ソフトキーボード、現在のコードを自動的にポップアップする必要があります:

    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 キーボードが表示されます (テキスト入力で)。

グリッチのように見えます。それと一緒に暮らしたくない。タイマーで物事をやって、別の順序で物事をやろうとしました。最初の後に連続するたびに、キーボードが一番上に表示され、ジャンプすることはありません。回避策を知っている人はいますか?ソフトキーボードを横向きモードで全画面表示にしたいだけです(縦向きモードには、ダイアログボックスが上に移動して表示されるのに十分なスペースがあります.

ありがとう

4

0 に答える 0