在最后一个EditText的键盘上完成后隐式的“提交”
我已经使用了一些应用程序,当我填写我的用户名,然后去我的密码,如果我点击键盘上的“完成”,login表单会自动提交,无需点击提交button。 这是怎么做的?
尝试这个:
在你的布局放/编辑这个:
<EditText android:id="@+id/search_edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text" android:singleLine="true" android:imeOptions="actionDone" />
在你的活动中把这个(例如在onCreate):
// your text box EditText edit_txt = (EditText) findViewById(R.id.search_edit); edit_txt.setOnEditorActionListener(new EditText.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { submit_btn.performClick(); return true; } return false; } });
其中submit_btn
是您的提交button与您的onclick处理程序附加。
您需要在EditText
上设置IME选项。
<EditText android:id="@+id/some_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Whatever" android:inputType="text" android:imeOptions="actionDone" />
然后添加一个OnEditorActionListener
到视图来监听“完成”操作。
EditText editText = (EditText) findViewById(R.id.some_view); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { boolean handled = false; if (actionId == EditorInfo.IME_ACTION_DONE) { // TODO do something handled = true; } return handled; } });
官方API文档: https : //developer.android.com/guide/topics/ui/controls/text.html#ActionEvent
这是如何完成的
editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if(actionId==EditorInfo.IME_ACTION_DONE){ //do something } return false; } });
不要忘记添加
<EditText android:layout_height="wrap_content" android:layout_width="wrap_content" android:imeOptions="actionDone"/>
actionDone在你的EditText中。
<EditText android:id="@+id/signinscr_userName" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/userName" android:imeOptions="actionNext" /> <EditText android:id="@+id/signinscr_password" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="@string/password" android:imeOptions="actionDone" android:inputType="textPassword" />
在.java文件中
EditText userNameField = (EditText) findViewById(R.id.signinscr_userName); EditText passwordField = (EditText) findViewById(R.id.signinscr_password); passwordField.setOnEditorActionListener(new OnEditorActionListener() { public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { //Do your operation here. return false; } });
EditText edit_txt = (EditText) findViewById(R.id.search_edit); edit_txt.setOnEditorActionListener(new EditText.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { // which is u had set a imeoption if (actionId == EditorInfo.IME_ACTION_DONE) { submit_btn.performClick(); return true; } return false; } });