IME内部的EditText(软键盘)

时间:2014-11-22 10:59:33

标签: android keyboard android-edittext ime

我为Android开发了一个软键盘,我想在键盘的主屏幕上输入我自己的 EditText文本。

如果我在键盘布局中添加EditText,则表示没有从键盘接收输入(如果我将其放在DialogPopupWindow中,则不会。 requestFocussetFocusable等也没有帮助。

EditText接收键盘输入的唯一方法是将其放入新的Activity(这不是我需要的)。 AI-Type键盘已完成此操作。它们允许在键盘内进行Google搜索。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。在editText VISABILITY从GONE更改为VISIBLE之后,我不得不设置焦点并显示软键盘。我使用以下代码实现了这一点:

(new Handler()).postDelayed(new Runnable() {

    public void run() {
//      ((EditText) findViewById(R.id.et_find)).requestFocus();
//      
        EditText yourEditText= (EditText) findViewById(R.id.et_find);
//      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//      imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);

        yourEditText.dispatchTouchEvent(MotionEvent.obtain(
            SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
            MotionEvent.ACTION_DOWN , 0, 0, 0));
        yourEditText.dispatchTouchEvent(MotionEvent.obtain(
            SystemClock.uptimeMillis(), SystemClock.uptimeMillis(),
            MotionEvent.ACTION_UP , 0, 0, 0));                       

    }
}, 200);

它对我来说有100毫秒的延迟,但没有任何延迟或只有1毫秒的延迟就失败了。

代码的注释部分显示了另一种方法,该方法仅适用于某些设备。我在OS 2.2版(仿真器),2.2.1(真实设备)和1.6(仿真器)上进行了测试。

这种方法给我带来了很大的痛苦。