Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在文本视图中显示特定单词_Android_Textview - Fatal编程技术网

Android 在文本视图中显示特定单词

Android 在文本视图中显示特定单词,android,textview,Android,Textview,我正在创建一个应用程序,其中我正在文本视图中搜索特定单词。我有一个编辑文本、一个文本视图和一个按钮,当我在编辑文本中输入任何单词并点击按钮时,它会给我整个文本文件的行位置和该行中单词的位置…我在文本视图中添加了文本文件的内容…现在我的问题是我是否可以突出显示编辑文本输入的文本视图中的所有单词。?如果可以,请告诉我如何做..如果有你知道吗?是的,你可以通过编写HTML来突出显示文本视图的某些部分 String styledText = "This is <font color='red'&g

我正在创建一个应用程序,其中我正在文本视图中搜索特定单词。我有一个编辑文本、一个文本视图和一个按钮,当我在编辑文本中输入任何单词并点击按钮时,它会给我整个文本文件的行位置和该行中单词的位置…我在文本视图中添加了文本文件的内容…现在我的问题是我是否可以突出显示编辑文本输入的文本视图中的所有单词。?如果可以,请告诉我如何做..如果有你知道吗?

是的,你可以通过编写HTML来突出显示文本视图的某些部分

String styledText = "This is <font color='red'>simple</font>.";
textView.setText(Html.fromHtml(styledText), TextView.BufferType.SPANNABLE);
String styledText=“这很简单。”;
textView.setText(Html.fromHtml(styledText),textView.BufferType.SPANNABLE);

使用Spannable在Spannable中设置文本您可以设置span,通过设置span,您可以突出显示所需的文本

您也可以使用span,这很方便,因为您知道单词的位置:

    SpannableString res = new SpannableString(entireString);
    res.setSpan(new ForegroundColorSpan(color), start, end, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
其中,
entireString
是要高亮显示的单词所在的字符串,
color
是您希望高亮显示文本的颜色,
start
是单词的位置,
end
是单词的结尾(start+word.length())

然后,可以像普通字符串一样将SpannableString res应用于文本视图:

textView.setText(res);
注意:如果希望文本的背景颜色而不是文本本身,请使用
BackgroundColorSpan
而不是
foreggroundcolorspan

编辑: 在您的情况下,它是这样的(您必须在阅读全文时保存linecount和indexfound的值):

string=“你好”
textview.setText(Html.fromHtml(字符串))

还是不清楚,你能更新我的代码吗?这是我的codehttp://pastebin.com/BCcHWAgS 这是我在第18行的代码,你可以看到我在不同的条件下申请span,我不知道它为什么不工作?它显示为最后一个位置。这是我的代码,我不知道为什么它在第18行不工作,你可以看到我已经给出了三种不同情况下的跨度,但作为输出,它只显示最后一个值。每当你想要一个新职位时,你都需要创建一个新的跨度,否则你只需要移动旧的跨度。即移动StyleSpan boldSpan=新StyleSpan(Typeface.BOLD);例如,我的字符串是aammmaaammmaamaa好的,现在在这个代码中,我在三个位置有aa,当我使用这个代码时:它只是highlighting first aa,它的解决方案是什么?这是我的codehttp://pastebin.com/ydmUHYH4 它只是显示了第一个高亮度值
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);
}
string ="<font color='#ff0000' > <b>hello</b> </font>"

textview.setText(Html.fromHtml(string))