我的应用程序中有一个登录页面,其中列出了一些元素:
- 用户名(编辑文本)
- 密码(编辑文本)
- 登录(按钮)
按下 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,这不起作用。有一个值为 5
的 actionid
,它捕获软键盘的 enter
键操作。
关于Android - 在软键盘上捕获 "Done"和 "Enter"按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851834/