位置: 编程技术 - 正文

[置顶] android浮动搜索框的使用([置顶]马粥街残酷史)

编辑:rootadmin
引言

推荐整理分享[置顶] android浮动搜索框的使用([置顶]马粥街残酷史),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:[置顶]津鱼.我爱你,[置顶]电影名字《收件人不详》,[置顶]津鱼.我爱你,[置顶]公主大人接下来是拷问时间31,[置顶]JM259194,[置顶]bilinovel,[置顶]bilinovel,[置顶]bilinovel,内容如对您有帮助,希望把文章链接给更多的朋友!

在我们的应用程序中经常需要提供搜索服务,比如搜索联系人, 搜索商品信息等等。我们可以自己在布局中自定义我们的搜索框,实现我们的搜索逻辑。但是还有一种更简单的方法:使用android系统给我们提供的搜索功能框架。 在android中,提供两种实现搜索功能的方式:search dialog 和 searchView. search dialog类似于普通的dialog,悬浮于我们的窗体之上。示例图如下: searchView通常被嵌套在我们的布局之中,最典型的案例就是在actionBar中使用searchView.下图是searchView在微信中的使用。(PS:图中的放大镜就是searchView)

不管你使用哪种方式,安卓系统都会发送查询请求到处理搜索逻辑的activity中,来实现搜索功能。 另外,除了普通的文字搜索外,还提供了一下的搜索功能: 1.语音搜索 2.最近搜索记录提示 3.自定义搜索记录提示 4.google系统搜索框 google系统搜索框

需要注意的是:安卓系统并不会提供搜索逻辑,也就是说,当系统将搜索关键字传递给我们的时候,需要我们自己来处理搜索逻辑。比如在数据库中搜索、在网络中搜索。 另外,安卓系统也不会显式地调用我们的搜索框,我们需要自己调用方法来显示我们的搜索框。 今天我们主要介绍search dialog的使用方式。

基本原理

首先我们来了解一下系统搜索功能的基本原理。 (一)当用户在搜索框中执行搜索操作后,系统会自动创建一个Intent,并且将用户搜索的关键字存放到Intent中。 (二)系统会启动处理搜索逻辑的activity(通常可以命名为SearchableActivity)并将intent传递给SearchableActivity,然后在SearchableActivity中处理我们的搜索逻辑。

配置搜索框

第一步,我们需要配置我们搜索框的xml文件,其中包括一些属性比如:语音搜索,搜索提示和搜索记录等等。 配置文件通常命名为searchable.xml 并且必须 存放在我们工程的res/xml目录中(没有就创建一个) (PS:系统使用这个配置文件来实例化SearchableInfo对象,这个对象是提供搜索相关的元数据的,比如SearchableActivity的类名,搜索关键字的类型等等。但是我们不能自己实例化SearchableInfo 对象,只能通过配置文件的方式来设置) 下面是searchable.xml配置文件的内容

searchable.xml

配置文件的根节点必须是searchable ,其中label是必须的,它的值为一个string资源引用,通常是应用程序的名称(尽管它是一个必须的属性,但通常情况下是不显示出来的,除非你开启了搜索建议功能)。 android:hint是配置搜索框的输入提示信息,虽然不是必须的属性,但是强烈建议设置这个属性,以便用户输入搜索信息的时候,可是知道能输入那些搜索信息。 以配置很多的属性,但大部分属性都只是在使用搜索建议和语音搜索时进行配置。

SearchableActivity

第二步, 我们创建SearchableActivity来处理搜索逻辑并且显示搜索结果。 我们需要在android-manifest.xml文件中配置SearchableActivity的一些属性,来将它指定为处理搜索逻辑的activity

android-manifest.xml

首先在intent-filter节点中添加 ACTION_SEARCH的action。然后再meta-data节点中的name属性必须为android.app.searchable,resource属性为我们的配置文件searchable.xml 注意:我们并不需要在intent-filter中配置category,因为SearchManager会根据SearchableActivity的componentName,显示地传递数据给它。 查看下列SearchManager.class的源码,我们可以知道这是怎么实现的。

SearchManager.class

一般而言,查询到的数据都是通过一个ListView来展示的,所以,我们可以让SearchableActivity继承ListActivity来方便操作。

[置顶]
        android浮动搜索框的使用([置顶]马粥街残酷史)

在SearchableActivity中,我们需要完成三件事: 1.接受查询参数 当用户执行搜索操作的时候,系统通过intent传递名为QUERY 的数据,其中包含的就是我们的搜索关键字,我们可以在intent中接受QUERY数据 。

2.根据查询参数查询数据

获取到查询关键字query后,我们就可以执行我们的查询逻辑了。

queryContact方法是我写的模拟查询字典的方法。这里可以换成在数据库或者网络中查询数据。

3.显示查询到的数据 查询到数据中,我们需要将数据显示到ListView中,并且当用户点击某一查询结果时,将查询结果返回给MainActivity.

使用搜索框

最后,我们就需要在MainActivity中使用我们的搜索框了。由于前面说过,搜索框默认情况下是隐藏的,需要我们自己来调用。在调用之前,我们还需要在manifest文件中进行配置,指定使用searchableActivity.

在MianActivity的节点中,我们需要配置meta-data节点,name必须指定为android.app.default_searchable,value表示我们的searchableActivity. 如果想将搜索框指定为全局的,在整个application中都能使用,那就将meta-data节点配置在application节点中。

最后,我们在MainActivity中调用搜索框。 由于不同的设备的物理按键有很大的差异,有些手机有物理的搜索按键,而有些手机是没有的。所以我们最好自己在activity中通过一个搜索按钮来显式的调用搜索框。另外一种方法是,通过手机软键盘上面的搜索按钮来调用搜索框,这需要在OnCreate()中调用 setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL) . 搜索框是一个悬浮于屏幕上的dialog。它不会对activity栈和生命周期引起任何变化。所以当搜索框出现的时候,没有任何如onPause()的方法被调用。 通过调用onSearchRequested()方法,我们来激活搜索框。 在MainActivity中,我们点击button来显示搜索框,执行搜索后,将获取到的搜索结果显示在TextView中。

MainActivity.class

另外,我们也可以重写onSearchRequested()方法,在搜索的同时做一些其他的操作,比如暂停音乐播放等等。

另外,如果我们需要对查询关键字加一些限制条件的时候,我们可以调用onSearchRequested()发送一些额外的数据给searchableActivity,searchableActivity中进行处理。

当searchableActivity接受到传递的查询参数和关键字时,就可以进行查询操作了。

注意:我们不能再onSearchRequested()方法外调用startSearch方法,任何操作都必须通过onSearchRequested()来调用。

本文参考自android官网:

菜鸟学安卓Log.v(“第五篇”)——安卓工程目录的介绍及打包安卓应用程序及安装过程 安卓的工程目录如下图:下面是res文件夹,双击展开后得下图工程目录结构:src:存放java代码gen:存放自动生成文件的.R.java存放res文件夹下对应资源的idlibs

cocos2dx 3.x 命令行创建和编译工程 1.设置环境变量JAVA_HOME=C:ProgramFilesJavajdk1.7.0_CLASSPATH=.;%JAVA_HOME%lib;Path增加%JAVA_HOME%bin;ANT_ROOT=E:codeCocos2dxapache-ant-1.9.3binANDROID_SDK_ROOT=F:SoftwareDevTools

生成APK的签名 1.生成签名文件(alias只能用全英文而且不超过8个字符)cdE:FileDocumentscocos2dxgamekeytool-genkey-aliasgame-keyalgRSA-validity-keystoregame.keystore输入密钥库口令:

标签: [置顶]马粥街残酷史

本文链接地址:https://www.jiuchutong.com/biancheng/376639.html 转载请保留说明!

上一篇:Android实用代码大全(简单的安卓代码)

下一篇:菜鸟学安卓Log.v(“第五篇”)——安卓工程目录的介绍及打包安卓应用程序及安装过程(菜鸟 安卓)

  • 汇算清缴研发费用加计扣除优惠明细表
  • 增值税税控系统技术维护费怎么做账
  • 个税子女教育扣除需要提供什么资料
  • 进口货物再出口 增值税处理
  • 企业所得税汇算清缴退税怎么做账
  • 罚款收入需要开票吗
  • 房贷利息抵个税细则 两套房
  • 由于生产工艺改进引起建筑物设备陈旧
  • 出售设备账务处理
  • 个体生产经营所得税税率2023
  • 广告位租赁合同要交印花税吗
  • 普通发票打歪了可以用吗
  • 普票每季度开多少免税
  • 个人所得税必须得交吗
  • 审计风险可控吗
  • 工程预缴税款几个点
  • 91开头的税号是什么
  • 企业所得税汇算清缴申报表
  • 建筑公司收取的劳务费和挂靠管理费有区别吗?
  • 购入二手设备,无发票怎么记账
  • 小规模企业转为一般纳税人怎么做会计分录
  • 处理固定资产账务处理税率
  • 销售库存商品的记账凭证
  • 租赁发票交税交多少
  • 三代税款手续费是什么意思
  • 企业所得税利润总额怎么算
  • 百旺开票系统升级后如何恢复
  • 出口销售收入记账方法有哪些?
  • 分红个人所得税怎么交
  • 不良品退回处理流程
  • 一般纳税人建筑服务税率是多少
  • php preg_grep
  • 服装制造业现状和发展趋势
  • 境外服务收入如何申报增值税
  • 商住房买卖过户流程
  • 桑吉尔夫个人简介
  • 企业所得税申报表模板
  • yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
  • antd:ConfigProvider+getPopupContainer解决筛选框遮挡问题(及其他浮层问题)
  • [九]深度学习Pytorch-transforms图像增强(剪裁、翻转、旋转)
  • 企业年报网上申报入口贵州
  • 普通增值发票作废税务局能查到吗
  • 出口退税会计分局
  • 免税农产品怎么抵扣进项税
  • 考试费开什么发票税目
  • 企业单方面调整员工的工作岗位
  • 商业承兑汇票在网银上怎么查询
  • 企业转让无形资产的方式有
  • sqlserver2005没有实例
  • 固定资产每月计提还是每年计提
  • 2020年附加税减免怎么填报表
  • 政府补助的分类包括
  • 提现手续费属于什么费用
  • 建筑公司异地施工
  • 购买的银行理财产品能提前赎回吗
  • 企业发生的经济业务主要有哪些
  • 财务软件可以直接做管理费用吗?
  • mysql5.5改密码
  • 高效内存管理
  • /wlan direct
  • 随机产生10个数
  • xp安装磁盘格式
  • linux 根目录
  • win1020h2正式版下载
  • 如何找?
  • ubuntu怎么安装程序
  • express model
  • css的基础
  • 遍历目录文件
  • Unity3D游戏开发毕业论文
  • dos批命令
  • NGUI之UIGrid
  • python简易
  • unity c+
  • jquery iframe写入内容
  • 可以抵扣的消费税项目
  • 已抵扣过的进项怎么做账
  • 货物税费
  • 技术服务收入确认方法
  • 什么是美国注册商标
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设