Android - 在软键盘上捕获 "Done"和 "Enter"按键事件

标签 android authentication android-edittext android-softkeyboard keyevent

我的应用程序中有一个登录页面,其中列出了一些元素:

  • 用户名(编辑文本)
  • 密码(编辑文本)
  • 登录(按钮)

按下 Login 后,它将登陆到主屏幕。目的是当用户在 Samsung Galaxy S3 上的软键盘上完成密码输入后点击 Done 时执行相同的操作;和 HTC One X 软键盘的 Enter 键。

因此,密码字段的 EditText 是这样的:

<EditText
    android:id="@+id/password_txt"
    android:layout_width="200dip"
    android:layout_height="wrap_content"
    android:imeOptions="flagNoExtractUi"
    android:inputType="textPassword"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="8dp"
    android:singleLine="true" />

在 Activity 中,无论我尝试什么都在这里:

EditText mPassword = (EditText) findViewById(R.id.password_txt);
mPassword.setOnEditorActionListener(new TextView.OnEditorActionListener() {

                @Override
                public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_ENTER || actionId == EditorInfo.IME_ACTION_DONE){
                        Log.e("MyApp", " ------> IN EDITOR ACTION DONE");
                    }
                    return false;
                }
            });

我曾尝试将密码字段的 imeOptions 与 flagNoExtractUi 一起保留为 actionDone,但没有成功。

最佳答案

我在 reply by Asha 中找到了解决方案这似乎适用于 Samsung Galaxy S3、S3 Mini、S2、Google Nexus Tab,希望适用于三星的所有设备。对于 HTC,到目前为止我已经检查过它在 HTC Desire X 上工作。对于 HTC One X,这不起作用。有一个值为 5actionid,它捕获软键盘的 enter 键操作。

关于Android - 在软键盘上捕获 "Done"和 "Enter"按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851834/

相关文章:

android - 平均划分屏幕android

java - 如何在 Dashclock 扩展中维护持久的 BroadcastReceiver?

c# - Flickr API 中不可用的操作的 Flickr 自动化(如添加联系人)

java - 通过授权限制对 Play Framework 中方法的访问 - Java

java - 如何更改editText字段上的突出显示颜色

android - 如何检查edittext的文本是否为电子邮件地址?

Android:外部SD卡的绝对位置

android - 实现AndroidX依赖关系后, list 合并失败

ios - Beta 测试、Facebook 登录、Parse。某些用户的 Facebook 信息未保存到 Parse。 swift

java - 我的警报对话框自定义布局出现问题