Android SearchView介绍及搜索提示实现

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


1. layout文件

Java


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent" >

<SearchView

android:id="@+id/search_view"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:iconifiedByDefault="true"

android:inputType="textCapWords"

android:imeOptions="actionSearch"

android:queryHint="" />

</RelativeLayout>

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,两个函数,下面代码包含了如何利用延迟执行实现搜索提示

Java部分实现

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

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
| WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
表示默认输入法弹出

编辑框内容为空点击取消的x按钮,编辑框收缩,可在onClose中返回true

Java


1

2

3

4

5

6

7


searchView.setOnCloseListener(new OnCloseListener() {

@Override

public boolean onClose() {

return true;

}

});

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

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

隐藏输入法键盘

Java


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15


InputMethodManager inputMethodManager;

inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

private void hideSoftInput() {

if (inputMethodManager != null) {

View v = SearchActivity.this.getCurrentFocus();

if (v == null) {

return;

}

inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(),

InputMethodManager.HIDE_NOT_ALWAYS);

searchView.clearFocus();

}

}

其中SearchActivity为Activity的类名

时间: 2024-12-31 00:01:41

Android SearchView介绍及搜索提示实现的相关文章

Android自定义View——自定义搜索框(SearchView)

概述 在Android开发中,当系统数据项比较多时,常常会在app添加搜索功能,方便用户能快速获得需要的数据.搜索栏对于我们并不陌生,在许多app都能见到它,比如豌豆荚 在某些情况下,我们希望我们的自动补全信息可以不只是纯文本,还可以像豌豆荚这样,能显示相应的图片和其他数据信息,因此Android给我们提供的AutoCompleteTextView往往就不够用,在大多情况下我们都需要自己去实现搜索框. 分析 根据上面这张图,简单分析一下自定义搜索框的结构与功能,有  1. 搜索界面大致由三部门组

Android学习笔记(29):搜索框SearchView

SearchView提供一个搜索框,可以监听用户输入,用户提交搜索时,也可以通过监听器执行实际行动. 常用XML属性和相关方法: XML属性 相关方法 说明 android:iconifiedByDefault setIconifiedByDefault(boolean) 设置搜索框是否自动缩小为图标 setSubmitButtonEnable(boolean) 设置是否显示搜索按钮 android:inputType setInputType(int) 设置输入文本格式 android:max

Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用示例_Android

本文实例讲述了Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用.分享给大家供大家参考,具体如下: 现在我们上网几乎都会用百度或者谷歌搜索信息,当我们在输入框里输入一两个字后,就会自动提示我们想要的信息,这种效果在Android 里是如何实现的呢? 事实上,Android 的AutoCompleteTextView Widget ,只要搭配ArrayAdapter 就能设计同类似Google 搜索提示的效果. 本例子先在Layout 当中布局一个AutoCom

Android SearchView搜索框组件的使用方法_Android

SearchView是搜索框组件,它可以让用户在文本框里输入文字,通过监听器取得用户的输入,当用户点击搜索时,监听器执行实际的搜索. 本文就为大家分享了SearchView搜索框组件的使用方法,供大家参考,具体内容如下 效果: 代码SearchActivity.java package com.jialianjia.bzw.activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.

Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用示例

本文实例讲述了Android仿百度谷歌搜索自动提示框AutoCompleteTextView简单应用.分享给大家供大家参考,具体如下: 现在我们上网几乎都会用百度或者谷歌搜索信息,当我们在输入框里输入一两个字后,就会自动提示我们想要的信息,这种效果在Android 里是如何实现的呢? 事实上,Android 的AutoCompleteTextView Widget ,只要搭配ArrayAdapter 就能设计同类似Google 搜索提示的效果. 本例子先在Layout 当中布局一个AutoCom

Android Listview 滑动过程中提示图片重复错乱的原因及解决方法_Android

主要分析Android中Listview滚动过程造成的图片显示重复.错乱.闪烁的原因及解决方法,顺便跟进Listview的缓存机制. 1.原因分析 Listview item 缓存机制:为了使得性能更优,Listview会缓存行item(某行对应的view).listview通过adapter的getview函数获得每行的item.滑动过程中, a.如果某行item已经划出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存: b.获取滑入屏幕的行item之前会先判断缓存中是否有可用的it

仿google搜索提示 SuggestFramework的使用_AJAX相关

一.首先来看一下什么是suggest framework Suggest Framework 故名思意,就是仿 Google Suggest 的一个小框架,让你的文本框也有提示功能.利用suggest framework你可以在自己的网站上很轻松实现"输入提示"效果,这种效果会很大程度上提高用户体验,提高搜索效率. 一个页面上可以出现多个搜索框,每个搜索框都可以实现单独配置. 此框架无浏览器限制,基本兼容当前的绝大多数浏览器,包括Internet Explorer 5+ (Win/Ma

基于jQueryUI和Corethink实现百度的搜索提示功能_php实例

先给大家展示下效果图:   目录:   这里是以corethink模块的形式,只需要安装上访问 index.php?s=/test/index 1.建好模块目录,写好模块的总体文件 opencmf.PHP <?php return array( // 模块信息 'info' => array( 'name' => 'Test', 'title' => 'Test', 'icon' => 'fa fa-newspaper-o', 'icon_color' => '#993

解决android手机安装包频繁提示解析错误方法

Android操作系统作为目前唯一可以与苹果iOS系统平分秋色的一款新生系统,它之所以成长的如此之快,除了其很强的开源性,Android系统一个很大的优势就在于其海量增长的应用程序.一款好玩的应用程序是充实闲暇时光的一柄利器,当我们新入手一款Android手机,慢慢熟悉后或多或少都会想到丰富其内置的应用程序,看到好玩的游戏或软件都会想要下载安装.而如果大家的Android手机在安装apk程序途中弹出"解析包时出现问题"这样的提示,会不会觉得很揪心呢?那么Android解析包出现问题有没