TextView中可能有多个样式吗?

是否有可能为TextView中的不同部分文本设置多个样式?

例如,我将文字设置如下:

tv.setText(line1 + "n" + line2 + "n" + word1 + "t" + word2 + "t" + word3);

是否有可能为每个文本元素有不同的样式? 例如,line1粗体,word1斜体等。

开发人员指南的常见任务和如何在Android中执行这些任务包括选择,突出显示或设置部分文本的样式:

// Get our EditText object.
EditText vw = (EditText)findViewById(R.id.text);

// Set the EditText's text.
vw.setText("Italic, highlighted, bold.");

// If this were just a TextView, we could do:
// vw.setText("Italic, highlighted, bold.", TextView.BufferType.SPANNABLE);
// to force it to use Spannable storage so styles can be attached.
// Or we could specify that in the XML.

// Get the EditText's internal text storage
Spannable str = vw.getText();

// Create our span sections, and assign a format to each.
str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new BackgroundColorSpan(0xFFFFFF00), 8, 19, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
str.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 21, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

但是,在文本中使用明确的位置数字。 有没有更干净的方法来做到这一点?


如果有人想知道如何做到这一点,以下是一种方法:(再次感谢Mark!)

mBox = new TextView(context);
mBox.setText(Html.fromHtml("<b>" + title + "</b>" +  "<br />" + 
            "<small>" + description + "</small>" + "<br />" + 
            "<small>" + DateAdded + "</small>"));

对于此方法支持的非官方标签列表,请参考此链接或此问题:Android TextView支持哪些HTML标签?


尝试使用Html.fromHtml() ,并用粗体和斜体HTML标记标记文本,例如:

Spanned text = Html.fromHtml("This mixes <b>bold</b> and <i>italic</i> stuff");
textView.setText(text);

有点偏离主题,但我发现这里太有用了,不要在这里提及。

如果我们希望从string.xml资源中读取Html文本并使其易于本地化,该怎么办? CDATA使这成为可能:

<string name="my_text">
  <![CDATA[
    <b>Autor:</b> Mr Nice Guy<br/>
    <b>Contact:</b> myemail@grail.com<br/>
    <i>Copyright © 2011-2012 Intergalactic Spacebar Confederation </i>
  ]]>
</string> 

从我们的Java代码中,我们现在可以像这样使用它:

TextView tv = (TextView) findViewById(R.id.myTextView);
tv.setText(Html.fromHtml(getString(R.string.my_text))); 

我没有想到这会起作用。 但它的确如此。

希望这对你们中的一些人有用!

链接地址: http://www.djcxy.com/p/56295.html

上一篇: Is it possible to have multiple styles inside a TextView?

下一篇: Android TextView Justify Text