在一些登陆,搜索的过程中,输入框在用户输入完后点击软键盘的回车、搜索等的按钮即可完成登陆或者搜索的功能,不必要再让用户再次点击页面上的登陆或者搜索按钮才能够进行操作。
概述
用图来说话吧,下图是一个高德地图的一个搜索框:
你们会发现并没有搜索按钮,而是在键盘的右下角有一个小图标(放大镜图标或者搜索字样),这代表的是搜索的动作,点击后就可以进行搜索。
而在一个浏览器下的一个输入框时,软键盘也会有相对应的变化,如下图:
填写网址后点击软键盘的转到即可到达输入的网页。
imeOptions
上面概述上的两个功能使得EditText拥有图标变化的能力就是android:imeOptions
属性。
而EditorInfo类源码中一共提供了以下属性供我们选择
1 | public static final int IME_ACTION_DONE = 6; //对应actionDone |
我们在xml中编写对应的EditText,来直接演示下理解它们的实用意义:
1 |
|
运行效果:
注意:该属性必须配置
android:singleLine="true"
属性或者配合android:maxLines="1"
与android:inputType="number"
结合使用。缺一不可。即便singleLine已经被废弃,又或者单纯使用maxLines是无效的。
对EditText指定不同的imeOptions之后,就需要实现OnEditorActionListener 中的onEditorAction()方法,然后根据不同的动作执行进行响应。
对于actionDone、actionNext和actionPrevious,系统都自己进行了部分处理。
- actionDone:隐藏输入法
- actionNext:跳到下一个EditText
- actionPrevious:跳到上一个EditText
我们使用案例中实现以一个搜索的例子实现:
1 | public class MainActivity extends AppCompatActivity { |
运行效果:
部分第三方的输入法,对EditorInfo支持的不一样,有的功能实现了,但是对应的图标没有修改过来,有的干脆功能就没有实现。
总结
actionDone
- 完成 - 对应 EditorInfo.IME_ACTION_DONE
actionGo
- 前进 - 对应 EditorInfo.IME_ACTION_GO
actionNext
- 下一项 - 对应 EditorInfo.IME_ACTION_NEXT
actionNone
- 无动作 - 对应 EditorInfo.IME_ACTION_NONE
actionPrevious
- 上一项 - 对应 EditorInfo.IME_ACTION_PREVIOUS
actionSearch
- 搜索 - 对应 EditorInfo.IME_ACTION_SEARCH
actionUnspecified
- 未指定 - 对应 EditorInfo.IME_ACTION_UNSPECIFIED
actionSend
- 发送 - 对应 EditorInfo.IME_ACTION_SEND
参考资料
https://blog.csdn.net/liuweiballack/article/details/46708697