强制对话框输入要求横向全屏ime软键盘

时间:2011-03-02 17:36:56

标签: android keyboard dialog ime

我有一个带输入的对话框,我必须自动弹出软键盘,当前代码:

    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();

这种方法很好,除了一种行为。第一次在横向模式下显示此窗口时,对话框会跳起来,好像它正试图为软键盘腾出空间,然后意识到没有足够的空间,跳回来,然后全屏ime键盘显示(用文字输入)。

这看起来像一个小故障。不想忍受它。尝试过不同的事情,按时间做事。第一次连续后,键盘显示在顶部,没有跳跃。有人知道任何解决方法吗?我只是希望软键盘在横向,全屏和横向模式下显示(纵向模式有足够的空间让对话框向上移动并可见。

由于

0 个答案:

没有答案