2012-09-19 74 views
0

我正在使用follwing代碼來顯示更改焦點時編輯框的鍵盤。顯示軟焦點更改焦點edittext android

no1.setOnKeyListener(new OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) 
      { 
      if(keyCode == 66) { 

       no2.requestFocus(); 

      } 
      } 
      return false; 
     } 
    }); 


    no2.setOnKeyListener(new OnKeyListener() { 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) 
      { 
      if(keyCode == 66) { 
       //Log.e("I am inside no2","no2"); 
       no3.requestFocus(); 

       return true; 


      } 
      } 
      return false; 
     } 
    }); 



    no2.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     public void onFocusChange(View v, boolean hasFocus) { 
      if (hasFocus) { 
       Log.e("In","Innnnnn"); 
       InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.showSoftInput(no2, InputMethodManager.SHOW_IMPLICIT);   
      } 
     } 
    }); 

但是鍵盤沒有顯示。日誌語句正在打印。這意味着它正在進入focusChanged方法。任何想法我做錯了什麼?

+0

沒有ü在模擬器或設備檢查? – rajeshwaran

+0

我正在使用設備 – user1667307

+0

您在列表視圖中使用的編輯文本可能是? – Leeeeeeelo

回答

0

使用InputMethodManager控制鍵盤。

+0

這正是我在做的 – user1667307

0

嘗試......

final AlertDialog dialog = ...; 

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if (hasFocus) { 
      dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
     } 
    } 
}); 
+0

這不是一個對話框。它只是一個編輯框在當前佈局上膨脹。我應該如何取代對話框? – user1667307

0

試試這個

InputMethodManager inputMethodManager=(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);