Android - 在软键盘上捕获"完成"和"输入"键事件

Lav*_*nya 9 android login keyevent android-softkeyboard android-edittext

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

  • 用户名(EditText)
  • 密码(EditText)
  • 登录(按钮)

按下时Login,它将进入主屏幕.当用户Done在软键盘上键入密码完成时点击时,执行相同的动作Samsung Galaxy S3; 和Enter软键盘上的键HTC One X.

那么,密码字段的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" />
Run Code Online (Sandbox Code Playgroud)

在活动中,无论我尝试了什么,都在这里:

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;
                }
            });
Run Code Online (Sandbox Code Playgroud)

我确实尝试保持密码字段的imeOptions actionDone以及flagNoExtractUi但它没有成功.

Lav*_*nya 3

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