一、前言

今天分享一个小技巧,很多有搜索功能的 App 都有这个功能,在搜索输入框弹出的软键盘右下角,定制按钮样式,例如出现"搜索"字样,这样的好处是操作起来更方便,可以直接在输入法上进行下一步的操作。

相信大家应该都有见到过,都是小技巧,知道的就再复习一下。

二、效果

先来看看效果,这里用的是微信的截图。

android 自定义输入法布局 手机输入法自定义键位_搜索

右下角就是我们需要做的按钮。

三、实现效果

其实拆分需求来看,要实现这样的效果,就需要做到两点。

  1. 改变弹出的软键盘右下角的按钮样式。
  2. 监听软键盘右下角按钮的点击。

下面我们分别来看看如何做到,其实很简单。

3.1 修改右下角按钮的样式

改变右下角样式,其实很简单,只需要两个 TextView 的属性配合起来就可以改变它。这两个属性分别是 android:imeOptionsandroid:singleLine==“true”android:singleLine 比较好理解,需要限定为单行输入,否则右下角应该是一个换行的按钮。

android:imeOptions 就是用来定制软键盘右下角的按钮样式的,它支持很多选项。

android 自定义输入法布局 手机输入法自定义键位_软键盘_02

这些选择,在 Editor 中,都有对应的取值,这个直接看源码就可以区分了。

android 自定义输入法布局 手机输入法自定义键位_搜索_03

如上图所示,它支持的参数还挺多,例如前面微信的例子,就是使用的 IME_ACTION_SEARCH ,当然,如果你有需要也可以使用其他的,例如:IME_ACTION_SEND 表示右下角是一个"发送"字样的按钮,IME_ACTION_NEXT 表示是一个"下一个"字样的按钮。这些都很好理解,没什么。

3.2 监听按钮事件

能让软键盘上显示我们需要的内容之后,就需要去监听它的点击事件。

监听软键盘的按钮事件,需要用到 TextView 的 setOnEditorActionListener() 方法,它接受一个 TextView.OnEditorActionListener 的事件监听。

android 自定义输入法布局 手机输入法自定义键位_搜索_04

可以看到,这里需要实现 onEditorAction() 方法,这里的 actionId 就是我们之前,设置的 IME_ACTION_SEARCH 。

最终实现的效果就很清晰了。

android 自定义输入法布局 手机输入法自定义键位_android_05

接下来我们只需要让这个 EditText 触发显示软键盘就可以了,当然,不是它触发的软键盘弹出也没关系,只要焦点再它身上就可以了。