无法重置突出显示的编辑文字词

时间:2018-10-02 12:53:48

标签: android android-edittext highlight

如果使用“搜索视图”小部件搜索了某个特定单词,则我正在使用外部库来突出显示编辑文本中的单词。

文本荧光笔: 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>

1 个答案:

答案 0 :(得分:0)

在搜索为空时查看here行,它们将显示所有列表项而不会突出显示。