Android 仿支付宝搜索结果页,字符串部分文字显示高亮
最近收到一个需求就是,搜索的关键词,在搜索结果页的搜索条目上高亮显示。类似于支付宝搜索结果页的效果。
先来看一下效果如下图:
经过一番思虑之后,感觉还是比较简单的,直接上代码
/*** 字符串高亮显示部分文字* @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 仿支付宝搜索结果页,字符串部分文字显示高亮相关推荐
- android支付宝支付微信支付封装,Android仿支付宝微信支付密码界面弹窗封装dialog...
一,功能效果 二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType=& ...
- android 余额宝,Android 仿支付宝中的余额宝收益进度条
一. 看效果 二.上代码 package com.framework.widget; import android.app.activity; import android.content.conte ...
- Android仿斗鱼领取鱼丸文字验证(三)
今天来写最后一部分,九宫格部分,先来看一下最终的效果图: 一.分析功能 直接看下边的九宫格,九宫格里边的文字随机,文字颜色随机,并且每个文字都进行了不同程度的扭曲变形,点击看不清的时候,可以对九宫格的 ...
- Android 仿支付宝支付密码输入框的具体实现
Android仿支付宝支付密码框 前言 1. 设计思路 2. 项目地址和implementation使用方法 3. 涉及到的内容 4. 设计流程 4.1 Layout 4.2 GridView和Ada ...
- Android仿微信图片编辑处理:文字,马赛克,裁剪,涂鸦,旋转图片等
Android仿微信图片编辑处理:文字,马赛克,裁剪,涂鸦,旋转图片等 如图: 这个项目实现了微信图片编辑处理的关键功能,如给一张图片添加文字,打上马赛克,裁剪图片,在图片上手势涂鸦.引用了karel ...
- android 保险密码效果,本文实例为大家分享了android仿支付宝密码输入框展示的具体代码,供大家参考,具体内容如下这个没什么好分析的,就是一些基本的绘制什么线,矩形什么的,看代码更...
本文实例为大家分享了android仿支付宝密码输入框展示的具体代码,供大家参考,具体内容如下 这个没什么好分析的,就是一些基本的绘制什么线,矩形什么的,看代码更具体 布局文件: android:lay ...
- android 余额宝收益列表,Android 仿支付宝中的余额宝收益进度条
一. 看效果 二.上代码 package com.framework.widget; import android.app.Activity; import android.content.Conte ...
- Android 仿支付宝蚂蚁森林动画效果
Android 动画可以归纳为以下几种: 视图动画(View 动画) 帧动画(Frame 动画.Drawable 动画) 属性动画 触摸反馈动画(Ripple Effect) 揭露动画(Reveal ...
- php 两段文本对比,不同的文字显示高亮
php 两段文本对比,不同的文字显示高亮[下面这个只能区分错误后面的..] <?php$str1 ="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggS ...
最新文章
- Maltego更新到4.1.6
- 【感悟随笔】没能变强是因为你太贪图舒服了
- AgileEAS.NET平台视频会议培训第二辑-简单插件开发应用演练(速度下载)
- gscatter in matlab Scatter plot by group machine learning and statics tool box required
- 企业架构 - ADM方法概要介绍
- 机器学习(三十八)——博弈论(1)
- 链接ftp命令行_windows下最轻便的FTP/SCP文件管理器
- 使用putty在linux主机和windows主机之间拷贝文件(已测试可执行)
- jquery按键事件_jQuery按键事件
- 【汇编语言】指令寻址
- 浅谈Android选项卡(二)
- php一句话 专杀,PHP-DDOS脚本专杀工具1.0 官方版
- 计算机画图怎样更改文字,一招教你利用画图工具修改图片上的文字
- 三国杀诺基亚java_拍照手机「三国杀」:诺基亚 808 PureView、iPhone 4S、HTC One S 大比拼...
- 冯仑《企业领导最容易犯的十大错误》 .
- 用 Python 切换输入法
- 边境的悍匪—机器学习实战:第十章 Keras人工神经网络简介
- VC ADO访问MySql数据库(MySql数据库初探二)
- 两个栈共享一块存储空间新解
- CISCO设备信息泄漏漏洞案例