最近收到一个需求就是,搜索的关键词,在搜索结果页的搜索条目上高亮显示。类似于支付宝搜索结果页的效果。

先来看一下效果如下图:


经过一番思虑之后,感觉还是比较简单的,直接上代码

/*** 字符串高亮显示部分文字* @param textView  控件* @param str1      要高亮显示的文字(输入的关键词)* @param str2      包含高亮文字的字符串*/private void setTextHighLight(TextView textView, String str1, String str2) {SpannableString sp = new SpannableString(str2);// 遍历要显示的文字for (int i = 0 ; i < str1.length() ; i ++){// 得到单个文字String s1 = str1.charAt(i) + "";// 判断字符串是否包含高亮显示的文字if (str2.contains(s1)){// 查找文字在字符串的下标int index = str2.indexOf(s1);// 循环查找字符串中所有该文字并高亮显示while (index != -1) {ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor("#db384c"));sp.setSpan(colorSpan, index, index + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);// s1从这个索引往后开始第一个出现的位置index = str2.indexOf(s1, index + 1);}}}// 设置控件textView.setText(sp);}

为了能很好的理解代码,代码的关键位置的注释还是比较多的,就不多用文字解释了。

代码并不是很完善,根据不同的需求,可能还需要考虑中文、英文、中文字符、以及英文字符的过滤,如果有这方面的需求可以在网络上搜索一下相关的功能实现,相关介绍还是比较多的。

补充一:

TextView设置高亮,有多种实现方式,通过HTML,SpannableString都可以实现。还有待总结,先把遇到的情况就下来

通过正则来过滤关键字,设置高亮。主要通过两个类Pattern和Matcher具体代码如下

/*** TextView 显示高亮* @param view* @param str1  要高亮显示的文字(输入的关键词)* @param str2  包含高亮文字的字符串*/private void initHighLight(TextView view, String str1, String str2) {textView = (TextView) findViewById(R.id.textView);SpannableString sp = new SpannableString(str2);for (int i = 0 ; i < str1.length() ; i++){String s = String.valueOf(str1.charAt(i));// 正则匹配Pattern p = Pattern.compile(s);Matcher m = p.matcher(sp);// 查找下一个while (m.find()) {// 字符开始下标int start = m.start();// 字符结束下标int end = m.end();// 设置高亮sp.setSpan(new ForegroundColorSpan(Color.RED), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);}}view.setText(sp);}

Android 仿支付宝搜索结果页,字符串部分文字显示高亮相关推荐

  1. android支付宝支付微信支付封装,Android仿支付宝微信支付密码界面弹窗封装dialog...

    一,功能效果 二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType=& ...

  2. android 余额宝,Android 仿支付宝中的余额宝收益进度条

    一. 看效果 二.上代码 package com.framework.widget; import android.app.activity; import android.content.conte ...

  3. Android仿斗鱼领取鱼丸文字验证(三)

    今天来写最后一部分,九宫格部分,先来看一下最终的效果图: 一.分析功能 直接看下边的九宫格,九宫格里边的文字随机,文字颜色随机,并且每个文字都进行了不同程度的扭曲变形,点击看不清的时候,可以对九宫格的 ...

  4. Android 仿支付宝支付密码输入框的具体实现

    Android仿支付宝支付密码框 前言 1. 设计思路 2. 项目地址和implementation使用方法 3. 涉及到的内容 4. 设计流程 4.1 Layout 4.2 GridView和Ada ...

  5. Android仿微信图片编辑处理:文字,马赛克,裁剪,涂鸦,旋转图片等

    Android仿微信图片编辑处理:文字,马赛克,裁剪,涂鸦,旋转图片等 如图: 这个项目实现了微信图片编辑处理的关键功能,如给一张图片添加文字,打上马赛克,裁剪图片,在图片上手势涂鸦.引用了karel ...

  6. android 保险密码效果,本文实例为大家分享了android仿支付宝密码输入框展示的具体代码,供大家参考,具体内容如下这个没什么好分析的,就是一些基本的绘制什么线,矩形什么的,看代码更...

    本文实例为大家分享了android仿支付宝密码输入框展示的具体代码,供大家参考,具体内容如下 这个没什么好分析的,就是一些基本的绘制什么线,矩形什么的,看代码更具体 布局文件: android:lay ...

  7. android 余额宝收益列表,Android 仿支付宝中的余额宝收益进度条

    一. 看效果 二.上代码 package com.framework.widget; import android.app.Activity; import android.content.Conte ...

  8. Android 仿支付宝蚂蚁森林动画效果

    Android 动画可以归纳为以下几种: 视图动画(View 动画) 帧动画(Frame 动画.Drawable 动画) 属性动画 触摸反馈动画(Ripple Effect) 揭露动画(Reveal ...

  9. php 两段文本对比,不同的文字显示高亮

    php 两段文本对比,不同的文字显示高亮[下面这个只能区分错误后面的..]   <?php$str1 ="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggS ...

最新文章

  1. Maltego更新到4.1.6
  2. 【感悟随笔】没能变强是因为你太贪图舒服了
  3. AgileEAS.NET平台视频会议培训第二辑-简单插件开发应用演练(速度下载)
  4. gscatter in matlab Scatter plot by group machine learning and statics tool box required
  5. 企业架构 - ADM方法概要介绍
  6. 机器学习(三十八)——博弈论(1)
  7. 链接ftp命令行_windows下最轻便的FTP/SCP文件管理器
  8. 使用putty在linux主机和windows主机之间拷贝文件(已测试可执行)
  9. jquery按键事件_jQuery按键事件
  10. 【汇编语言】指令寻址
  11. 浅谈Android选项卡(二)
  12. php一句话 专杀,PHP-DDOS脚本专杀工具1.0 官方版
  13. 计算机画图怎样更改文字,一招教你利用画图工具修改图片上的文字
  14. 三国杀诺基亚java_拍照手机「三国杀」:诺基亚 808 PureView、iPhone 4S、HTC One S 大比拼...
  15. 冯仑《企业领导最容易犯的十大错误》 .
  16. 用 Python 切换输入法
  17. 边境的悍匪—机器学习实战:第十章 Keras人工神经网络简介
  18. VC ADO访问MySql数据库(MySql数据库初探二)
  19. 两个栈共享一块存储空间新解
  20. CISCO设备信息泄漏漏洞案例

热门文章

  1. python中的统计模型库——statsmodels
  2. 告别“浮云” 享用云计算服务优势
  3. 如何在CAD中进行修剪命令操作?
  4. Centos 7(linux)echo 用法的注意事项
  5. 在iOS应用中跳转到淘宝或天猫客户端商品详情页
  6. 手游人类一败涂地联机一直连接服务器,人类一败涂地手游怎么联机
  7. 随机梯度下降法(stochastic gradient descent,SGD)
  8. 读书笔记,《刻意练习》,第四章,黄金标准
  9. excel 2010 删除重复行(按某一列重复)
  10. 眼花缭乱的家电市场,我们到底需要一台什么样的电视?