2014-11-22 135 views
-4

我开发了一款适用于Android的软键盘,并且我想在键盘的主屏幕上输入我自己的EditText中的文字IME内部的EditText本身(软键盘)

如果我将EditText添加到键盘布局中,它不会从键盘接收输入(如果我将它放在DialogPopupWindow中)。另外requestFocussetFocusable等没有帮助。

EditText接收键盘输入的唯一方法是如果我把它放在一个新的Activity(这不是我所需要的)。 AI型键盘已经做到了这一点。他们允许在键盘内使用Google搜索。

任何想法?

+21

如果你解决了它,然后回答你自己的问题。 – 2014-11-27 00:07:59

+0

回答问题并“接受”答案,以便我们其他人可以从您的经验中学习。 – user239546 2014-11-30 20:57:16

+3

你似乎不知道Stack Overflow是什么。如果你解决了那么问题,然后提供答案,以便其他人可以从中学习。你要求别人回答这个问题只是荒谬的。这个世界上的什么可能是你提出这个问题的理由? – 2014-11-30 21:48:35

回答

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

它为我的作品与延时100ms,但失败,没有任何延迟或只有1毫秒的延迟。

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

这种方法为我节省了很多痛苦。