如果使用“搜索视图”小部件搜索了某个特定单词,则我正在使用外部库来突出显示编辑文本中的单词。
文本荧光笔: xeoh/TextHighlighter
有一个问题,每当我尝试重置背景/前景或目标时,什么都不会发生。
我尝试搜索其他库,但是其他库无法按我需要的方式工作。我尝试全局声明TextHighlighter()实例,并使用相同的实例进行重置,但仍然没有运气。如果调用了搜索视图的onClose(),如何取消突出显示搜索词?
这是代码部分:
val searchBar = findViewById<SearchView>(R.id.refSearchViewID)
searchBar.setOnQueryTextListener(object: SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
val textHighlighter = TextHighlighter()
textHighlighter.setBackgroundColor(Color.parseColor("#FFFF00"))
textHighlighter.setForegroundColor(Color.RED)
textHighlighter.setBold(true)
textHighlighter.setItalic(true)
textHighlighter.addTarget(findViewById(R.id.refTextID))
textHighlighter.highlight(query, TextHighlighter.BASE_MATCHER)
textHighlighter.invalidate(TextHighlighter.CASE_INSENSITIVE_MATCHER)
return true
}
override fun onQueryTextChange(newText: String?): Boolean {
return true
}
}) //end of query listener
searchBar.setOnCloseListener(object : SearchView.OnCloseListener{
override fun onClose(): Boolean {
Toast.makeText(this@ReferenceActivity, "Closed", Toast.LENGTH_SHORT).show()
resetHighlightedText()
return true
}
})
重置功能
private fun resetHighlightedText()
{
val textHighlighter = TextHighlighter()
textHighlighter.resetTargets()
textHighlighter.resetForegroundColor()
textHighlighter.resetForegroundColor()
}
搜索视图XML
<LinearLayout
android:id="@+id/linearLayoutID"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="vertical"
android:padding="10dp">
<SearchView
android:id="@+id/refSearchViewID"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" />
<EditText
android:id="@+id/refTitleID"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@null"
android:ems="10"
android:gravity="top"
android:hint="@string/ref_title_hint"
android:inputType="text|textAutoCorrect|textCapSentences"
android:padding="3dp"
android:singleLine="false"
android:textAllCaps="false"
android:textColor="@android:color/black"
android:textSize="23sp"
android:textStyle="bold" />
<EditText
android:id="@+id/refTextID"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:autoLink="email|web|phone"
android:background="@null"
android:ems="10"
android:gravity="top"
android:hint="@string/ref_text_hint"
android:inputType="text|textAutoCorrect|textMultiLine|textCapSentences"
android:linksClickable="true"
android:padding="3dp"
android:singleLine="false"
android:textAlignment="gravity"
android:textSize="19sp" />
</LinearLayout>
</ScrollView>