iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现高亮搜索功能的示例
  • 148
分享到

Android实现高亮搜索功能的示例

2024-04-02 19:04:59 148人浏览 独家记忆
摘要

目录首先看效果图:使用方法:1、普通场景使用2、在DataBinding中使用首先看效果图: 整词高亮: 分词高亮: 下面贴上我封的方法 fun stringToHig

首先看效果图:

整词高亮:

分词高亮:

下面贴上我封的方法


 
fun stringToHighLight(text: String, keyWord: String, isCut: Boolean = false): SpannableStringBuilder {
    val spannable = SpannableStringBuilder(text)
    try {
        var keyword: MutableList<String> = ArrayList()
        if (isCut) {
            for (i in keyWord.indices) {
                keyword.add(keyWord.substring(i, i + 1))
            }
        } else {
            keyword = arrayListOf(keyWord)
        }
        var span: CharacterStyle?
        var wordReg: String
        for (i in keyword.indices) {
            var key = ""
            if (keyword[i].contains("*") || keyword[i].contains("(") || keyword[i].contains(")")) {
                val chars = keyword[i].toCharArray()
                for (k in chars.indices) {
                    key = if (chars[k] == '*' || chars[k] == '(' || chars[k] == ')') {
                        key + "\\" + chars[k].toString()
                    } else {
                        key + chars[k].toString()
                    }
                }
                keyword[i] = key
            }
            wordReg = "(?i)" + keyword[i] 
            val pattern: Pattern = Pattern.compile(wordReg)
            val matcher: Matcher = pattern.matcher(text)
            while (matcher.find()) {
                span = ForegroundColorSpan(Color.parseColor("#4599F7"))
                spannable.setSpan(span, matcher.start(), matcher.end(), Spannable.SPAN_MARK_MARK)
            }
        }
    } catch (e: Exception) {
        LogUtil.d("stringToHighLight-Error-------->$e")
    }
    return spannable
}

使用方法:

1、普通场景使用

//整词搜索 isCut可不传


stringToHighLight("原文", "关键字")

//分词搜索


stringToHighLight("原文", "关键字",true) 

2、在DataBinding中使用

1):定义BindingAdapter


@BindingAdapter("app:setHighLightText", "app:setHighTKEyWord")
fun setHighLightText(view: TextView, content: String?, keyWord: String) {
    content?.let { view.text = stringToHighLight(it, keyWord) }
}

2):在xml中绑定


   <TextView
        Android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@{itemmodel.isRead?@color/readColor:@color/noreadColor}"
        android:textSize="14sp"
        android:textStyle="bold"
        app:layout_constraintTop_toTopOf="parent"
        app:setHighLightText="@{itemmodel.title}"
        app:setHightkeyWord="@{viewmodel.keyString}" />

搞定!

以上就是Android实现高亮搜索功能的示例的详细内容,更多关于Android实现高亮搜索的资料请关注编程网其它相关文章!

--结束END--

本文标题: Android实现高亮搜索功能的示例

本文链接: https://www.lsjlt.com/news/125365.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作