android - 跨不同设备处理 EditText 中的输入键

标签 android android-layout android-edittext

现在,我正在使用 onEditorActionListener 处理我的 EditText 字段中的回车键,并查看 IME_NULL 的操作 ID。它适用于我的所有用户,除了一个。她有一部 Xperia Arc。

TextView.OnEditorActionListener keyListener = new TextView.OnEditorActionListener(){
  public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
    if(actionId == EditorInfo.IME_NULL){
      if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etUser))){
        ((EditText) findViewById(R.id.etPass)).requestFocus();
      }
      if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etPass))){
        logon();
      }
    }
  return true;
  }
};

了解该问题后,我尝试了另一种方法,即使用 onKeyListener 并查找键事件 ACTION_DOWN,然后检查键码是否与 KEYCODE_ENTER 匹配。

EditText etUserName = (EditText) findViewById(R.id.etUser);
etUserName.setOnKeyListener(new OnKeyListener() {
  public boolean onKey(View view, int keyCode, KeyEvent event){
    if (event.getAction() == KeyEvent.ACTION_DOWN){
      switch (keyCode)
      {
        case KeyEvent.KEYCODE_DPAD_CENTER:
        case KeyEvent.KEYCODE_ENTER:
          if(((EditText)findViewById(view.getId())) == ((EditText)findViewById(R.id.etUser))){
            ((EditText) findViewById(R.id.etPass)).requestFocus();
          }
          return true;
        default:
          break;
      }
    }
    return false;
  }
});

也没有骰子。我现在不知所措。有很多应用程序可以很好地处理回车键。他们有什么不同之处?

最佳答案

我想出了如何让它发挥作用。

我必须将 android:singleLine="true"添加到布局 XML 中的 EditText 标记(或者,您可以在代码中使用 setSingleLine() 来设置它)。这会强制编辑文本仅使用一行,焦点将转到下一个 EditText 框。

关于android - 跨不同设备处理 EditText 中的输入键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6401887/

相关文章:

java - 如何在 Android 或 Java 中获取 mp4 视频中的 GoPro HiLight 标签

android - EditText & TextView textColorPrimary 不遵循 API < 21 的主题颜色

Android:将自定义值设置为 NumberPicker

android - Edittext 导致 stackoverflow

android - 在 Android Edittext 中为特定文本设置文本颜色

android - 从 Eclipse 到 android studio 互联网问题

android - 如何在应用程序启动时触发方法? (安卓)

android - 在零位置插入 RecyclerView 项目 - 始终保持滚动到顶部

android - 在 Android 上的 TextView 中突出显示文本

android - 如何以编程方式扩展三星 Lollipop 设备上的状态栏?