Android TextView设置个别文字颜色详解

3星 · 超过75%的资源 需积分: 13 33 下载量 184 浏览量 更新于2024-09-17 收藏 178KB PDF 举报
"这篇内容主要讨论如何在Android的TextView组件中设置个别文字的字体颜色。" 在Android开发中,TextView是用于显示文本的基本组件。有时我们可能需要在文本中设置某些特定文字的颜色,以突出或者强调某些信息。本文将介绍两种方法来实现这一功能。 方法1:使用HTML标签 在Android的TextView中,我们可以利用HTML的标签来格式化文本,包括改变部分文字的颜色。例如,`<font color='color_value'>text</font>`标签可以用来设置文字颜色。下面是一个简单的示例: ```java import android.app.Activity; import android.os.Bundle; import android.text.Html; import android.widget.TextView; public class AndroidFronColorTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView htmlFormateTextView = (TextView)findViewById(R.id.testTextView); String source="这只是一个测试,测试<u>下划线</u>、<i>斜体字</i>、<font color='red'>红色字</font>的格式"; htmlFormateTextView.setText(Html.fromHtml(source)); } } ``` 在这个例子中,`source`字符串包含了HTML标签,`<font color='red'>红色字</font>`用于设置"红色字"为红色。通过调用`Html.fromHtml(source)`,这些HTML标签会被解析并应用到TextView上。 方法2:使用SpannableString和 ForegroundColorSpan 另一种方法是使用SpannableString和ForegroundColorSpan类,它们允许我们对文本中的特定部分应用样式。以下是一个示例: ```java import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; import android.widget.TextView; public class AndroidFronColorTest extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView textView = (TextView)findViewById(R.id.testTextView); String text = "这只是一个测试,我们需要让'红色字'变红"; SpannableString ss = new SpannableString(text); int start = text.indexOf("红色字"); int end = start + "红色字".length(); ss.setSpan(new ForegroundColorSpan(Color.RED), start, end, 0); textView.setText(ss); } } ``` 在这个例子中,我们首先创建了一个SpannableString对象,然后定位到"红色字"的位置,并使用ForegroundColorSpan对象将其颜色设为红色。最后,我们将这个SpannableString设置给TextView。 这两种方法都可以有效地实现TextView中个别文字的字体颜色设置,选择哪种取决于你的具体需求和应用场景。使用HTML标签更适用于已知格式化的文本,而使用SpannableString和ForegroundColorSpan则更适合动态地、程序化地改变文本颜色。