【问题标题】:Android - Capture "Done" and "Enter" key events on soft keyboardAndroid - 在软键盘上捕获“完成”和“输入”键事件
【发布时间】:2014-05-02 16:13:30
【问题描述】:

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

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

按下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 保留为 actionDone 以及 flagNoExtractUi,但没有成功。

【问题讨论】:

    标签: android login android-edittext android-softkeyboard keyevent


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      HTC 出于某种原因不支持 imeOptions,一般来说并非所有键盘都支持它。在here 上查看更多信息。我的建议是为下一步/完成/等制作自己的 UI 按钮。功能。

      【讨论】:

        猜你喜欢
        • 2015-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-30
        相关资源
        最近更新 更多