Android 更改软键盘右下角按键的样式以及监听此键的方法
2017-04-28 18:38
537 查看
一、我们在开发Android App时有时候会遇到更改软键盘右下角按键的样式
我们可以随自己的需求更改软键盘右下角的显示样式,例如:搜索,下一步,Q(搜索图标)具体对应:
actionNone : 按下后光标到下一行(回车)
actionGo : 按下后搜索(Go)
actionSearch : 放大镜
actionSend : Send 按下后发送
actionNext : Next 下一步
actionDone : Done,确定/完成,隐藏软键盘(包括不是最后一个文本输入框的情况也会隐藏)
使用方法:
在xml里面写布局时直接加给EditTxt的imeOptions属性,例如:
<EditText android:id="@+id/et" android:layout_width="match_parent" android:layout_height="wrap_content" android:imeOptions="actionSearch"/>
注:此时会发现并比起作用,这是因为少设置一个参数,既添加属性
android:singleLine="true"(因为默认是多行模式,而右下角的按键是用于换行的,当设置为单行模式后就没必要换行了)
二、我们在开发Android App时有时候还会遇到监听软键盘右下角按键的需求
例如我们在EditText里面输入内容后可以点击软键盘右下角的“搜索”按键进行搜索,或者在输入完毕后,点击右下角的"done"就马上进行下一步操作(例如将内容上传到服务器)。
下面列举几个方法:
重写Activity的dispatchKeyEvent(KeyEvent event)方法,在其中监听KeyEventKey.KEYCODE_ENTER键(右下角确定键),当此键按下的时候,隐藏输入法软键盘,将EditText内容上传到服务器例如:
@Override public boolean dispatchKeyEvent(KeyEvent event) { if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER){ /*隐藏软键盘*/ InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if(inputMethodManager.isActive()){ inputMethodManager.hideSoftInputFromWindow(MainActivity.this.getCurrentFocus().getWindowToken(), 0); } // 上传代码 return true; } return super.dispatchKeyEvent(event); }
重写dispatchKeyEvent(KeyEvent event),这种方法,因为我们可能在这个方法中进行其他任务,所以我们可以使用OnKeyListener的方法来监听软键盘按键。
et.setOnKeyListener(onKeyListener); private OnKeyListener onKeyListener = new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){ //隐藏软键盘 InputMethodManager imm= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if(imm.isActive()){ imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0); } // 对应逻辑操作 return true; } return false; } };
第三种方法,更加细化,我们可以解决更加复杂的情况。我们可以根据右下键是“GO”,“Done”,“Search”键的情况下做出更加具体的操作。
代码案例:
et.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event){ //判断是否是“GO”键 if(actionId == EditorInfo.IME_ACTION_GO){ //隐藏软键盘 InputMethodManager imm = (InputMethodManager) v .getContext().getSystemService( Context.INPUT_METHOD_SERVICE); if (imm.isActive()) { imm.hideSoftInputFromWindow( v.getApplicationWindowToken(), 0); } // 对应逻辑操作 return true; } return false; } });
相关文章推荐
- Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式
- Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式
- Android 监听软键盘按键与改变软键盘右下角按键样式
- android 自定义View在弹出的软键盘之上,以及测量软键盘高度和监听软键盘状态
- Android中RadioGroup RadioButton CheckBox多选按钮实现方法以及监听方法
- Android App监听软键盘按键的三种方式 以及 输入法删除退格键的冲突问题解决
- 解决 android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题
- android隐藏以及显示软键盘以及不自动弹出键盘的方法
- android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
- Android中自定义dialog方法,可直接调用,更改样式
- Android 程序退出的办法以及监听并处理用户按下back键的方法
- android隐藏以及显示软键盘以及不自动弹出键盘的方法
- android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
- Android APP监听软键盘的方法
- Android隐藏以及显示软键盘以及不自动弹出键盘的方法
- Android 另类方法监听软键盘的弹出收起事件
- android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
- android dialog 原来dialog对话框也有自己的按键监听事件 onKeyDown方法
- Android监听键盘是否弹出,以及获取软键盘的高度
- Android 类似淘宝 电商 搜索功能,监听软键盘搜索事件,延迟自动搜索,以及时间排序的搜索历史记录的实现