Android 开发中根据搜索内容实现TextView中的文字部分加粗

 更新时间:2017年03月27日 08:46:15   作者:TitleZWC  
最近遇到一个需求,需要做一个搜索功能。搜索的内容需要加粗显示。实现方法很简单,下面通过本文给大家分享Android 开发中根据搜索内容实现TextView中的文字部分加粗样式,非常不错,需要的朋友参考下

实现方式没有引入任何依赖,轻量级实现需求效果

最近遇到一个需求,需要做一个搜索功能。搜索的内容需要加粗显示。

完成了这个功能后,写下此博客,记录一下实现过程

效果图

这里写图片描述

首先自定义一个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自定义View实现折线图效果

    Android自定义View实现折线图效果

    这篇文章介绍的是一个折线图控件,用来显示一系列的状态,并可以进行滑动。有需要的可以参考借鉴。
    2016-08-08
  • Android开发No Focused Window ANR产生原理解析

    Android开发No Focused Window ANR产生原理解析

    这篇文章主要为大家介绍了Android开发No Focused Window ANR产生原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Android入门之Handler的使用教程详解

    Android入门之Handler的使用教程详解

    这篇文章主要为大家详细介绍了Android中Handler机制的使用,文中的示例代码讲解详细,有需要的朋友可以借鉴参考下,希望能够对大家有所帮助,
    2022-11-11
  • Android实战教程第四篇之简单实现短信发送器

    Android实战教程第四篇之简单实现短信发送器

    这篇文章主要为大家详细介绍了Android实战教程第四篇之简单实现短信发送器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Kotlin中?和!!的区别详细对比

    Kotlin中?和!!的区别详细对比

    这篇文章主要给大家介绍了关于Kotlin中?和!!区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Android仿QQ复制昵称效果

    Android仿QQ复制昵称效果

    这几天做一个复制文本的需求,突然看到QQ上复制昵称跟QQ号的效果,觉得很不错,就想要模仿一波,办法比较简单粗暴,反编译QQ获取了那个.9图片,然后就是用PopWindow实现了,需要的朋友可以参考下
    2019-05-05
  • Flutter中获取屏幕及Widget的宽高示例代码

    Flutter中获取屏幕及Widget的宽高示例代码

    这篇文章主要给大家介绍了关于Flutter中如何获取屏幕及Widget的宽高的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • 一步步实现Viewpager卡片翻页效果

    一步步实现Viewpager卡片翻页效果

    一步步实现Viewpager卡片翻页效果,文章很精彩,实现步骤很详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android实现京东首页效果

    Android实现京东首页效果

    这篇文章主要为大家详细介绍了Android实现京东首页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • Android获取触摸手势实现左右滑动

    Android获取触摸手势实现左右滑动

    这篇文章主要为大家详细介绍了Android获取触摸手势实现左右滑动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论