2010-07-17 73 views
7

虛擬鍵盤的 關鍵行爲,我想重寫 的行爲輸入虛擬鍵盤的鍵,以便: 如何覆蓋在Android的

  • 當屏幕上有更多的領域,它「標籤」下一個字段
  • 當它是屏幕的最後一個字段,它執行的屏幕

我一直在玩的IME選項和標籤的默認操作,但就是不不會的我想要的是。任何人有任何建議?

回答

9

在另一個論壇的幫助下,我找到了解決問題的方法。

爲了使其可重複使用,我已經創建了一個包含2個OnKeyListener對象和一個抽象的提交方法我自己的超級對話框類:在Dialog

public abstract class MyAbstractDialog extends Dialog { 

/** 
* OnKeyListener that puts the focus down when the ENTER key is pressed 
*/ 
protected View.OnKeyListener onEnterFocusDown = new View.OnKeyListener() { 

       @Override 
       public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
          (keyCode == KeyEvent.KEYCODE_ENTER)) { 
           v.requestFocus(View.FOCUS_DOWN); 
         return true; 
       } 
         return false; 
       } 
     }; 

/** 
* OnKeyListener that submits the page when the ENTER key is pressed 
*/ 
protected View.OnKeyListener onEnterSubmitView = new View.OnKeyListener() { 

       @Override 
       public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
          (keyCode == KeyEvent.KEYCODE_ENTER)) { 
           submitView(v); 
         return true; 
       } 
         return false; 
       } 
     }; 
     protected abstract void submitView(View v); 

} 

現在,我可以使用這些對象在我的領域設置:

// make the ENTER key on passwordField1 put the focus on the next field 
passwordField1.setOnKeyListener(onEnterFocusDown); 

// make the ENTER key on passwordField2 submit the page 
passwordField2.setOnKeyListener(onEnterSubmitView); 
+0

抱歉蹩腳的佈局,不知道爲什麼它不工作,他們的方式我想要 – Aak 2010-07-28 11:14:05