成安以诺,店铺公告,倍轻松颈部按摩器
实现方式没有引入任何依赖,轻量级实现需求效果
最近遇到一个需求,需要做一个搜索功能。搜索的内容需要加粗显示。
完成了这个功能后,写下此博客,记录一下实现过程
效果图
首先自定义一个stylespan,在stylespan里做加粗的等匹配状态的设置
@suppresslint("parcelcreator") public class searchstylespan extends stylespan { public searchstylespan(int style) { super(style); } @override public void updatedrawstate(textpaint ds) { ds.setfakeboldtext(true); //fixme 这里还可以做其他差异性设置(修改文字大小等) super.updatedrawstate(ds); } @override public void updatemeasurestate(textpaint paint) { paint.setfakeboldtext(true); super.updatemeasurestate(paint); } }
监听编辑框的内容变化
medittext.addtextchangedlistener(new textwatcher() { @override public void beforetextchanged(charsequence s, int start, int count, int after) { } @override public void ontextchanged(charsequence s, int start, int before, int count) { } @override public void aftertextchanged(editable editable) { checksearchcontent(medittext.gettext().tostring()); } });
通过循环,将textview 里的文字根据匹配内容分段
spannablestringbuilder searchstyle = new spannablestringbuilder(); int start; while (content.contains(searchcontent)) { start = content.indexof(searchcontent); searchstyle.append(getboldspannable(content.substring(0, start + searchcontent.length()), searchcontent)); content = content.substring(start + searchcontent.length()); } searchstyle.append(content);
将分段好的文字进行加粗处理
int start = content.indexof(searchcontent); spannablestringbuilder ssb = new spannablestringbuilder(content); ssb.setspan(new searchstylespan(typeface.normal), start, start + searchcontent.length(), spanned.span_exclusive_exclusive);
源码地址:https://github.com/titlezwc/boldspannable
以上所述是小编给大家介绍的android 开发中根据搜索内容实现textview中的文字部分加粗,希望对大家有所帮助
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio开发小型对话机器人app(实例代码)
Android通过Java sdk的方式接入OpenCv的方法
Android 通过cmake的方式接入opencv的方法步骤
Android Studio finish()方法的使用与解决app点击“返回”(直接退出)
Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)
网友评论