SearchView是搜索框组件,它可以让用户在文本框内输入汉字,并允许通过监听器监控用户输入,当用户用户输入完成后提交搜索按钮时,也通过监听器执行实际的搜索。

使用SearchView时可以使用如下常用方法。

  • setIconifiedByDefault(boolean iconified):设置该搜索框默认是否自动缩小为图标。
  • setSubmitButtonEnabled(boolean enabled):设置是否显示搜索按钮。
  • setQueryHint(CharSequence hint):设置搜索框内默认显示的提示文本。
  • setOnQueryTextListener(SearchView.OnQueryTextListener listener):为该搜索框设置事件监听器。

如果为SearchView增加一个配套的ListView,则可以为SearchView增加自动完成的功能。如下实例示范了SearchView的功能与用法。

实例:搜索   

该实例的界面布局文件中定义了一个SearchView和ListView,其中ListView用于为SearchView显示自动补齐列表。界面布局文件如下。

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. >
  7. <!-- 定义一个SearchView -->
  8. <SearchView android:id="@+id/sv"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"/>
  11. <!-- 为SearchView定义自动完成的ListView -->
  12. <ListView android:id="@+id/lv"
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content"
  15. />
  16. </LinearLayout>

上面的布局文件中定义了一个SearchView组件,并为该SearchView组件定义了一个ListView组件,该ListView组件用于为SearchView组件显示自动完成列表。
      下面是该实例对应的Activity代码。

该Activity对应的后台代码文件如下:

  1. package org.crazyit.helloworld;
  2.  
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.text.TextUtils;
  6. import android.view.Menu;
  7. import android.widget.*;
  8.  
  9. public class SearchViewTest extends Activity implements SearchView.OnQueryTextListener {
  10.  
  11. private SearchView sv;
  12. private ListView lv;
  13. //自动完成的列表
  14. private final String[] mStrings={"aaaaaa","bbbbbb","cccccc"};
  15.  
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.search_view_test);
  20. lv=(ListView)findViewById(R.id.lv);
  21. lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,mStrings));
  22. lv.setTextFilterEnabled(true);
  23.  
  24. sv=(SearchView)findViewById(R.id.sv);
  25. //设置该SearchView默认是否自动缩小为图标
  26. sv.setIconifiedByDefault(false);
  27. //为该SearchView组件设置事件监听器
  28. sv.setOnQueryTextListener(this);
  29. //设置该SearchView显示搜索按钮
  30. sv.setSubmitButtonEnabled(true);
  31. //设置该SearchView内默认显示的提示文本
  32. sv.setQueryHint("查找");
  33.  
  34. }
  35.  
  36. @Override
  37. public boolean onCreateOptionsMenu(Menu menu) {
  38. // Inflate the menu; this adds items to the action bar if it is present.
  39. getMenuInflater().inflate(R.menu.search_view_test, menu);
  40. return true;
  41. }
  42. //用户输入字符时激发该方法
  43. @Override
  44. public boolean onQueryTextChange(String newText) {
  45. // TODO Auto-generated method stub
  46. if(TextUtils.isEmpty(newText))
  47. {
  48. //清楚ListView的过滤
  49. lv.clearTextFilter();
  50. }
  51. else
  52. {
  53. //使用用户输入的内容对ListView的列表项进行过滤
  54. lv.setFilterText(newText);
  55.  
  56. }
  57. return true;
  58. }
  59. //单击搜索按钮时激发该方法
  60. @Override
  61. public boolean onQueryTextSubmit(String query) {
  62. // TODO Auto-generated method stub
  63. //实际应用中应该在该方法内执行实际查询
  64. //此处仅使用Toast显示用户输入的查询内容
  65. Toast.makeText(this, "您选择的是:"+query, Toast.LENGTH_SHORT).show();
  66. return true;
  67. }
  68.  
  69. }

上面的程序中粗体字代码就是控制SearchView的关键代码,第一段粗体字代码我iSearchView设置了事件监听器,并为该SearchView启用了搜索按钮。接下来程序重写了onQueryTextChange()、onQueryTextSubmit()两个方法,这两个方法用于为SearchView的事件提供响应。
    运行上面的程序,将看到如下效果:

搜索框(SearchView)的功能与用法的更多相关文章

  1. Android的搜索框SearchView的用法-android学习之旅(三十九)

    SearchView简介 SearchView是搜索框组件,他可以让用户搜索文字,然后显示.' 代码示例 这个示例加了衣蛾ListView用于为SearchView增加自动补全的功能. package ...

  2. 详细解读Android中的搜索框—— SearchView

    以前总是自己写的 今天看看别人做的 本篇讲的是如何用searchView实现搜索框,其实原理和之前的没啥差别,也算是个复习吧. 一.Manifest.xml 这里我用一个activity进行信息的输入 ...

  3. input搜索框实时检索功能实现(超简单,核心原理请看思路即可)

    问题:实现input搜索框实时检索的功能,类似哔哩哔哩首页搜索功能(壮哉我大b站!).公司要求,emmmm没办法,果然懒人是要被赶着走才会进步的说,诶嘿O(∩_∩)O. 解决方法: 1.参考资料:ht ...

  4. 微信小程序 —搜索框

    wxSearch优雅的微信小程序搜索框 一.功能 支持自定义热门key 支持搜索历史 支持搜索建议 支持搜索历史(记录)缓存 二.使用 1.将wxSearch文件夹整个拷贝到根目录下 2.引入 // ...

  5. 搜索框(SearchView)用法

    SearchView是Android原生的搜索框控件,它提供了一个用户界面,可以让用户在文本框内输入文字,并允许通过看监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索. S ...

  6. Android零基础入门第62节:搜索框组件SearchView

    原文:Android零基础入门第62节:搜索框组件SearchView 一.SearchView概述 SearchView是搜索框组件,它可以让用户在文本框内输入文字,并允许通过监听器监控用户输入,当 ...

  7. 用jsonp实现搜索框功能

    用jsonp实现搜索框功能 前面的话: 在上周本来想发一篇模仿必应搜索的界面.但是在准备写文章之前突然想到前面学习了ajax技术,在这里我也让我的页面有一种不需要手动刷新就能获取到数据.但是发现用前面 ...

  8. 【Android自己定义View实战】之自己定义超简单SearchView搜索框

    [Android自己定义View实战]之自己定义超简单SearchView搜索框 这篇文章是对之前文章的翻新,至于为什么我要又一次改动这篇文章?原因例如以下 1.有人举报我抄袭,原文链接:http:/ ...

  9. Jquery实现搜索框提示功能

    博客的前某一篇文章中http://www.cnblogs.com/hEnius/p/2013-07-01.html写过一个用Ajax来实现一个文本框输入的提示功能.最近在一个管理项目的项目中,使用后发 ...

随机推荐

  1. 归心似箭,IT达人分享抢票攻略

    [51CTO专稿]随着春节一天天临近,“购票难”的问题也愈发凸显,猎豹.火狐.360等“春运抢票神器”占领了各大网站的重要版面,“技术抢票”成为炙手可热的话题,看看身为程序员的邓以克是如何抢到回家的票 ...

  2. jQuery解除超链接<a>的click事件

    jQuery的 unbind 方法并不能解除超链接(即a标签)的click事件,如果想让超链接的默认click事件不发生需要如下处理: Js代码 $('#some-link-id').click(fu ...

  3. linux下查看cpu物理个数和逻辑个数 - chw1989的专栏 - 博客频道 - CSDN.NET

    body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLi ...

  4. PAT (Advanced Level) 1007. Maximum Subsequence Sum (25)

    简单DP. 注意:If all the K numbers are negative, then its maximum sum is defined to be 0, and you are sup ...

  5. php单元测试到底是什么东西呢?

    前言: 真正写php代码也有3年时间了,勉强算是一个php程序员, 但是,心底却一直没有底气. 都说测试驱动开发,可我连程序开发中什么是单元测试?这种基本的程序员的素养都 还不是很清楚,痛定思痛,决定 ...

  6. PHP学习笔记-1——快捷键

    整行删除 ctrl+E set get 生成 alt+ insert 查找.搜索和替换 Ctrl-F3 搜索位于插入点的词 F3/Shift-F3 在文件中查找下一个/上一个 Ctrl-F/H 在文件 ...

  7. ArcGIS 10.5,打造智能的Web GIS平台

    2017年新年来临之际,ArcGIS 10.5正式发布.历经几个版本,ArcGIS 10.5已经革新为一个智能的以Web为中心的地理平台,推出更精细的分级授权.全新的i3S三维标准.大数据分析处理产品 ...

  8. Sencha Cmd的简介

    Sencha Cmd的简介 ~~~~~~~~~~~~~~~~~~~~~~~ Sencha cmd 是一个跨平台的命令行工具,它从你应用程序的新创建到部署入产品中的整个生命周期都提供了许多自动化的执行任 ...

  9. 从内存中加载DLL Delphi版(转)

    源:从内存中加载DLL DELPHI版 原文 : http://www.2ccc.com/article.asp?articleid=5784 MemLibrary.pas //从内存中加载DLL D ...

  10. NSString的几个方法(rangeOfString,hasPrefix,hasSuffix,改变大小写...)

    - (NSRange)rangeOfString:(NSString *)searchString;//查找字符串中是包涵在某个字符串,并返回其开始位置和长度 例: NSRange range = [ ...