在whatsapp android中标记一个单词

时间:2015-11-29 12:23:17

标签: android textview whatsapp

我想在textview中用黄色标记一些单词,就像whatsapp在他们的应用程序中所做的那样。 我尝试过的是使用html标签:

tv.setText("<mark> hello </mark> world"); 但它不起作用,它没有标记单词,标签也是文本的一部分。

4 个答案:

答案 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>"))