Androidが高亮検索機能を実現する例
まず効果図を見ます。
全語ハイライト:
分詞が明るい:
私のシールの張り方をします。
1、普通のシーンで使う
//ワード検索isCutは伝えないことができます。
1):BindingAdapterを定義する
以上はAndroidが高亮検索機能を実現する例の詳細な内容です。Androidが高亮検索を実現するための資料については、他の関連記事に注目してください。
全語ハイライト:
分詞が明るい:
私のシールの張り方をします。
/**
*
* text
* keyWord
* isCut
* isCut = true ,
* isCut = false( )
**/
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、Data Bindingで使用する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が高亮検索を実現するための資料については、他の関連記事に注目してください。