美文网首页
Android 中搜索的关键字变亮

Android 中搜索的关键字变亮

作者: 因为我的心 | 来源:发表于2023-04-06 10:37 被阅读0次

一、前言:

需求:java 字符串中的搜索的关键词变亮

效果图:

效果图.png

字符串数字变亮的地址https://www.jianshu.com/p/fab20115165b

二、代码实现:

1、调用

val spannableStringBuilder = getSpannableKeyString(context, item, "11111")
 tvContent.text = spannableStringBuilder

2、功能实现

 /**
     * 文字中的选中字变橘黄色
     */
    fun getSpannableKeyString(
        context: Context,
        content: String? = null,
        regex:String
    ): SpannableStringBuilder? {
        content?.let {
            val style = SpannableStringBuilder(it)
            //去除key中重复的字符
            val set: MutableSet<Char> = HashSet()
            for (c in regex.toCharArray()) {
                set.add(c)
            }
            //for循环字符变色
            set.forEach { newRegex ->
                if (content.contains(newRegex)){
                    //查找所有包含字符的下标
                    val list = findAllOccurrences(content,newRegex)
                    list.forEach { index->
                        //字体颜色设置
                        style.setSpan(
                            ForegroundColorSpan(context.resources.getColor(R.color.color_FDA924)),
                            index,
                            index+1,
                            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
                        )
                    }
                }
            }

            return style
        }
        return null
    }

 /**
     * 查找字符的下标的数组
     */
    var result = arrayListOf<Int>();
    fun findAllOccurrences(str:String, key:Char):ArrayList<Int> {
        result.clear()
        var index = str.indexOf(key)
        while (index !== -1) {
            result.add(index)
            index = str.indexOf(key, index + 1)
        }
        return result
    }

相关文章

网友评论

      本文标题:Android 中搜索的关键字变亮

      本文链接:https://www.haomeiwen.com/subject/vopeddtx.html