我想在textview中用黄色标记一些单词,就像whatsapp在他们的应用程序中所做的那样。 我尝试过的是使用html标签:
tv.setText("<mark> hello </mark> world");
但它不起作用,它没有标记单词,标签也是文本的一部分。
答案 0 :(得分:3)
假设您有一个TextView电视,并且您想将黄色设置为“hello world”的文本“hello”。
TextView tv = (TextView) findViewById(R.id.textView);
Spannable word = new SpannableString("hello world");
word.setSpan(new ForegroundColorSpan(Color.YELLOW), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(word);
在第三行,我将黄色设置为“你好”。 “hello”从索引位置0开始,以索引位置5结束。设置span后,将Spannable单词设置为TextView tv的文本。
以下是 setSpan()
的文档setSpan (Object what, int start, int end, int flags)
将指定的标记对象附加到文本的范围开始...结尾,或者如果对象已经附加到其他位置,则将对象移动到该范围。有关标志的含义的解释,请参阅跨越。该对象可以是仅在您的应用程序中具有意义的对象,也可以是文本系统将用于影响文本显示或行为的对象。一些值得注意的是CharacterStyle和ParagraphStyle的子类,以及TextWatcher和SpanWatcher。
Spannable部分
这是具有附加到其范围的标记对象的文本的接口。并非所有文本类都具有可变标记或文本
答案 1 :(得分:1)
您需要创建Spannable并指定特定文本范围的颜色。如下面的答案:https://stackoverflow.com/a/3514435/1099716
答案 2 :(得分:1)
试试这个,
myTextView.setText(Html.fromHtml(text + "<font color=white>" + CepVizyon.getPhoneCode() + "</font><br><br>"
+ getText(R.string.currentversion) +someString));
答案 3 :(得分:1)
所有其他答案都是相关的,并且是我个人使用的答案,但为了提高灵活性,请注意也可以对html
类应用Html
格式:
tv.setText(Html.fromHtml("<font color='red'>Coloured Text</font>"))