[转]Android SearchView介绍及搜索提示实现

声明:其实官方已经有了通过menu区的实现方法,参见这里

需要说明的是,若你使用的是support.v7,一定要如下配置menu资源(解决见这里),否则拿不到menuItem.getActionView()会返回null,下面的menu配置请注意两个app

下面这个转载的方法挺土的,不建议使用。

转载自:《Android SearchView介绍及搜索提示实现》

本文主要介绍SearchView的使用、即时搜索提示功能的实现,以及一些设置。

具体代码可见SearchViewDemo@Github,可实现效果如下:
示例APK可从这些地址下载:Google Play, 360手机助手, 百度手机助手, 小米应用商店, 豌豆荚

1、layout文件

xml中主要配置有四个属性,如下:
android:iconifiedByDefault表示搜索图标是否在输入框内。true效果更加
android:imeOptions设置IME options,即输入法的回车键的功能,可以是搜索、下一个、发送、完成等等。这里actionSearch表示搜索
android:inputType输入框文本类型,可控制输入法键盘样式,如numberPassword即为数字密码样式
android:queryHint输入框默认文本

2、 java部分代码

SearchView几个主要函数

  • setOnCloseListener(SearchView.OnCloseListener listener)表示点击取消按钮listener,默认点击搜索输入框
  • setOnQueryTextListener(SearchView.OnQueryTextListener listener)表示输入框文字listener,包括public boolean onQueryTextSubmit(String query)开始搜索listener,public boolean onQueryTextChange(String newText)输入框内容变化listener,两个函数,下面代码包含了如何利用延迟执行实现搜索提示

上面代码在onQueryTextChange函数即输入框内容每次变化时将一个数据获取线程SearchTipThread放到ScheduledExecutorService中,500ms后执行,在线程执行时判断当前输入框内容和要搜索内容,若相等则继续执行,否则直接返回,避免不必要的数据获取和多个搜索提示同时出现。

searchView.onActionViewExpanded();表示在内容为空时不显示取消的x按钮,内容不为空时显示.

searchView.setSubmitButtonEnabled(true);编辑框后显示search按钮,个人建议用android:imeOptions=”actionSearch”代替。

隐藏输入法键盘

 

Leave a Reply

Your email address will not be published.