textView中的可单击文本,包含多种颜色和事件

时间:2014-06-07 12:52:42

标签: java android textview user-experience

我想制作一个 TextView 可点击,其中包含多个不同颜色且分配了事件的字词。

例如:

@james 喜欢玩 #girls

@james ,(绿色,粗体) #girls 以外的其他事件,(黄色)。

如何以最简单的方式实现这一目标?

2 个答案:

答案 0 :(得分:1)

使用Spannable

创建一个SpannableString,有两个跨度:每个单词一个,你想要的颜色与文本的其他部分不同。

String name   = "@james";
String action = " likes to play with ";
String tag    = "#girls";

SpannableStringBuilder builder = new SpannableStringBuilder(name + action + tag);
ForegroundColorSpan green      = new ForegroundColorSpan(Color.GREEN); 
ForegroundColorSpan yellow     = new ForegroundColorSpan(Color.YELLOW); 

builder.setSpan(green,  0, name.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
builder.setSpan(yellow, 0, name.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 

actionTextView.setText(sb);

对于问题的可点击部分,请使用与上面的ForegroundColorSpan相同的ClickableSpan

答案 1 :(得分:0)

您可以在TextView上设置HTML格式的文本,当然,它不支持所有HTML标记,但它支持许多文本格式标记。您可以像这样设置html格式的文本

textView.setText(Html.fromHtml(htmlString));