2010-07-17 56 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