文章目录

  • 一、需求分析
  • 二、功能实现
    • 1.资源文件
    • 2.核心代码
    • 2.效果图

一、需求分析

需要实现页面内文字搜索关键词功能,将匹配到的关键词高亮显示,且能够点击按钮切换到下一个关键词所在位置。首先需要高亮匹配到所有的关键词,这个可以使用字符串的replaceAll实现,切换到关键词的位置,需要滑动页面,那可能会想到ScrollView和TextView来实现,但是textview不是两端对齐的,获取位置会有偏差。于是想到利用webview来实现。

二、功能实现

1.资源文件

代码如下:

 <EditTextandroid:id="@+id/am_et_search"android:layout_width="match_parent"android:layout_height="40dp"android:layout_marginStart="5dp"android:layout_marginTop="5dp"android:layout_marginEnd="5dp"android:layout_marginBottom="5dp"android:background="@null"android:hint="请输入关键字"android:textColor="@color/black"android:textSize="16sp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/am_btn_search"android:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:text="搜  索"android:textSize="16sp"android:textColor="@color/white"android:layout_margin="5dp"/><Buttonandroid:id="@+id/am_btn_next"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:text="下一个"android:textSize="16sp"android:textColor="@color/white"android:layout_margin="5dp"/><Buttonandroid:id="@+id/am_btn_forward"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:text="上一个"android:textSize="16sp"android:textColor="@color/white"android:layout_margin="5dp"/></LinearLayout><android.webkit.WebViewandroid:id="@+id/am_webview"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginStart="10dp"android:layout_marginEnd="10dp"android:paddingBottom="10dp" />

2.核心代码

webview的findAllAsync可以实现高亮显示匹配到的关键词,webview的findNext()方法接收一个布尔值参数,true为查找下一个,false为查找上一个。另外如果想要根据当前匹配关键词的位置做一些事情,可以调用webview的find相关的监听事件来实现。
代码如下:

webView = findViewById(R.id.am_webview);
editText = findViewById(R.id.am_et_search);
btnSearch = findViewById(R.id.am_btn_search);
btnNext = findViewById(R.id.am_btn_next);
btnForword = findViewById(R.id.am_btn_forward);
webView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
btnSearch.setOnClickListener(view -> webView.findAllAsync(editText.getText().toString()));
btnNext.setOnClickListener(view -> webView.findNext(true));//查找下一个
btnForword.setOnClickListener(view -> webView.findNext(false));//查找上一个

2.效果图

android关键词搜索相关推荐

  1. android关键词检索功能,Android实现搜索关键词高亮显示-Kotlin

    在做Wandroid项目时有一个搜索功能,要在搜索结果中将匹配到的关键词高亮显示.但是 玩安卓API并没有提供颜色的高亮,只有字体斜体,效果看起来并不明显,并且昵称也参与了搜索,但并没有增加HTML标 ...

  2. 调用天地图API实现关键词搜索

    概述: 本文讲述结合天地图 js API,实现Openlayers中关键词的搜索与展示. 效果: 实现关键: 调用天地图APILocalSearch接口,实现关键词搜索,调用方式为:localsear ...

  3. Flink实时仓库-DWS层(关键词搜索分析-自定义函数,窗口操作,FlinkSql设置水位线,保存数据到Clickhouse)模板代码

    简介 关键词搜索实时分析,技术要点,自定义FlinkSql函数,使用聚合功能把结果输出到clickhourse 前置知识 ik分词 <dependency><groupId>c ...

  4. android的UDC功能,Android实现搜索历史功能

    本文实例为大家分享了Android实现搜索历史的具体代码,供大家参考,具体内容如下 SharedPreferences实现本地搜索历史功能,覆盖搜索重复的文本,可清空 1. 判断搜索内容是否含表情,不 ...

  5. android 键盘搜索按钮不收起键盘,android EditText 实现搜索框点击搜索隐藏键盘

    布局: android:id="@+id/search_input" android:background="#00000000" android:layout ...

  6. Android 系统搜索框(有浏览记录)

    实现Android 系统搜索框(有浏览记录),先看下效果: 一.配置搜索描述文件 要在res中的xml文件加创建sreachable.xml,内容如下: <?xml version=" ...

  7. Mr.J--Javascript表格创建 模糊搜索 关键词搜索

    本文章主要是了解js制作表格,不过现在前端一般都是用div+CSS布局,所以有兴趣的可以了解一下这种思想.在我们现实生活中表格是非常普遍的,也是非常好用的,现在我们有Excel,Word,WPS也可以 ...

  8. php实现关键字搜索mysql数据_PHP实现多个关键词搜索查询功能示例

    本文实例讲述了PHP实现多个关键词搜索查询功能.分享给大家供大家参考,具体如下: PHP对于数据库的搜索主要通过使用SQL语句中的like子句来实现.如果同时搜索多个关键词,可以使用union子句来将 ...

  9. Android系统搜索对话框(浮动搜索框)的使用

    http://www.ideasandroid.com/archives/310 Android系统搜索对话框(浮动搜索框)的使用 作者: ideasandroid 分类: android基础, an ...

最新文章

  1. 澎思科技成立新加坡研究院,将与多家机构合作研发自动驾驶等项目
  2. IntelliJ IDEA 2019.2最新解读:性能更好,体验更优,细节处理更完美!
  3. ubuntu启动时自动挂载windows分区
  4. Spring Cloud 应用在 Kubernetes 上的最佳实践 — 高可用(混沌工程)
  5. 无法设置共享文件夹的解决方法收集
  6. 在laravel5 中使用queue队列
  7. python学习-syspath、系统内置模块
  8. dos输入java Hello,出现错误: 找不到或无法加载主类 Hello
  9. Spring Boot 三大开发工具,你都用过几个?
  10. RabbitMQ小笔记
  11. Android 自定义view实现签到功能
  12. mysql 执行存储过程
  13. Xilinx火龙果学习笔记(1)---初识火龙果
  14. 【 网工在线画拓扑,赶紧保存收藏!】
  15. 机器学习教程 之 K-means聚类:简单有效的聚类方法
  16. 电脑如何创建html文件夹,如何在电脑上创建自己的隐私文件夹
  17. 前端笔试常考设计模式,操作系统,数据结构,ACM模板,经典算法,正则表达式,常用方法
  18. 基于AMESim的高功率密度LFP-C锂离子电池热失控仿真
  19. 自媒体人日常必看的7个运营学习网站,记得收藏起来
  20. android反编译修改教程,反编译教程

热门文章

  1. 老胡的周刊(第089期)
  2. 素食健康:八种素食助你清除体内废物
  3. 通过键盘输入三名同学四门课的成绩,分别求三名同学和四门课程的平均成绩。
  4. 用软碟通UltraISO制作windows7安装U盘
  5. IDEA service/DashBoard 不显示服务端口号,解决办法
  6. 前端innerText和value的区别
  7. RequestContextHolder跨线程获取不到request对象,解决方法
  8. 100句富有哲理的人生格言
  9. 深入分析Android 9.0源代码——引言
  10. linux定时执行命令