突出显示Textview中的特定单词

时间:2011-12-15 10:19:58

标签: android textview

我正在创建一个应用程序,我在其中搜索文本视图中的Perticular字。我有一个编辑文本,一个文本视图和一个按钮,当我在编辑文本中输入任何单词并单击按钮时它会给我整个文本文件中该行的单词行位置和位置...我在文本视图中附加了文本文件...现在我的问题是我可以突出显示编辑文本输入的文本视图中的所有单词。 ?如果我能,请告诉我该怎么做......如果有人知道的话吗?

4 个答案:

答案 0 :(得分:7)

你也可以使用Spannable来做,这很方便,因为你知道这个词的位置:

    SpannableString res = new SpannableString(entireString);
    res.setSpan(new ForegroundColorSpan(color), start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);

entireString是要突出显示的字词所在的字符串,color是您希望突出显示的文字所具有的颜色,start是该字词的位置,end 1}}是单词结束的地方(start + word.length())。

然后可以将SpannableString res应用于您的textview,就像常规字符串一样:

textView.setText(res);

注意:如果您希望文字的背景颜色而不是文字本身,请使用BackgroundColorSpan代替ForegroundColorSpan

修改 在你的情况下,它将是这样的(当你阅读整个文本时,你将不得不保存linecount和indexfound的值):

for(String test="", int currentLine=0; test!=null; test=br2.readLine(), currentLine++){
    if(currentLine==linecount){
        SpannableString res = new SpannableString(test);
        res.setSpan(new ForegroundColorSpan(0xFFFF0000), indexfound, indexfound+textword.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
    tv.append("\n"+"    "+test);
}

答案 1 :(得分:3)

是您可以通过编写HTML

来突出显示文本视图的某些部分
String styledText = "This is <font color='red'>simple</font>.";
textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);

答案 2 :(得分:0)

使用Spannable在spannable中设置文本你可以使用setSpan来突出显示你想要的文本

答案 3 :(得分:0)

string ="<font color='#ff0000' > <b>hello</b> </font>"

textview.setText(Html.fromHtml(string)) 

http://developer.android.com/reference/android/text/Html.html