2014-11-22 159 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(仿真器)上測試過。

這種方法爲我節省了很多痛苦。