一、前言
今天分享一个小技巧,很多有搜索功能的 App 都有这个功能,在搜索输入框弹出的软键盘右下角,定制按钮样式,例如出现"搜索"字样,这样的好处是操作起来更方便,可以直接在输入法上进行下一步的操作。
相信大家应该都有见到过,都是小技巧,知道的就再复习一下。
二、效果
先来看看效果,这里用的是微信的截图。
右下角就是我们需要做的按钮。
三、实现效果
其实拆分需求来看,要实现这样的效果,就需要做到两点。
- 改变弹出的软键盘右下角的按钮样式。
- 监听软键盘右下角按钮的点击。
下面我们分别来看看如何做到,其实很简单。
3.1 修改右下角按钮的样式
改变右下角样式,其实很简单,只需要两个 TextView 的属性配合起来就可以改变它。这两个属性分别是 android:imeOptions
和 android:singleLine==“true”
。android:singleLine
比较好理解,需要限定为单行输入,否则右下角应该是一个换行的按钮。
android:imeOptions
就是用来定制软键盘右下角的按钮样式的,它支持很多选项。
这些选择,在 Editor 中,都有对应的取值,这个直接看源码就可以区分了。
如上图所示,它支持的参数还挺多,例如前面微信的例子,就是使用的 IME_ACTION_SEARCH ,当然,如果你有需要也可以使用其他的,例如:IME_ACTION_SEND 表示右下角是一个"发送"字样的按钮,IME_ACTION_NEXT 表示是一个"下一个"字样的按钮。这些都很好理解,没什么。
3.2 监听按钮事件
能让软键盘上显示我们需要的内容之后,就需要去监听它的点击事件。
监听软键盘的按钮事件,需要用到 TextView 的 setOnEditorActionListener()
方法,它接受一个 TextView.OnEditorActionListener 的事件监听。
可以看到,这里需要实现 onEditorAction()
方法,这里的 actionId 就是我们之前,设置的 IME_ACTION_SEARCH 。
最终实现的效果就很清晰了。
接下来我们只需要让这个 EditText 触发显示软键盘就可以了,当然,不是它触发的软键盘弹出也没关系,只要焦点再它身上就可以了。