首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:使用TextView.setText()对字符串的一部分进行着色?

Android:使用TextView.setText()对字符串的一部分进行着色?
EN

Stack Overflow用户
提问于 2011-02-04 19:13:06
回答 12查看 87.5K关注 0票数 89

我希望通过.setText("")方法更改TextView视图的文本,同时对文本的一部分进行着色(或使其变为粗体、斜体、透明等),而不是对其余部分进行着色。例如:

代码语言:javascript
复制
title.setText("Your big island <b>ADVENTURE!</b>";

我知道上面的代码是不正确的,但它有助于说明我想要实现的目标。我该怎么做呢?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-02-04 19:19:51

使用spans

示例:

代码语言:javascript
复制
final SpannableStringBuilder sb = new SpannableStringBuilder("your text here");

// Span to set text color to some RGB value
final ForegroundColorSpan fcs = new ForegroundColorSpan(Color.rgb(158, 158, 158)); 

// Span to make text bold
final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); 

// Set the text color for first 4 characters
sb.setSpan(fcs, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 

// make them also bold
sb.setSpan(bss, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); 

yourTextView.setText(sb);
票数 207
EN

Stack Overflow用户

发布于 2011-02-04 19:16:03

代码语言:javascript
复制
title.setText(Html.fromHtml("Your big island <b>ADVENTURE!</b>")); 
票数 47
EN

Stack Overflow用户

发布于 2014-09-18 20:49:37

我希望这对你有帮助(它适用于多语言)。

代码语言:javascript
复制
<string name="test_string" ><![CDATA[<font color="%1$s"><b>Test/b></font>]]> String</string>

在你的java代码中,你可以这样做:

代码语言:javascript
复制
int color = context.getResources().getColor(android.R.color.holo_blue_light);
String string = context.getString(R.string.test_string, color);
textView.setText(Html.fromHtml(string));

这样,只有"Test“部分会有颜色(和粗体)。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4897349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档