很多情况下,开发者需要添加一些特殊样式的文本突出重点内容或者为链接提供视觉反馈,以此提高应用程序的用户友好度。例如,若要实现如下的效果,我们该怎么办?
在本次的例子中,我们将会分析如何使用TextView添加不同样式的文本和链接。
Activity代码如下:
package com.example.huangfei.hack1;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.style.BackgroundColorSpan;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 添加超链接
* 我们通过Html.fromHtml()方法处理带HTML代码的文本内容,将HTML转化为一个Spanned对象,
* 然后将该对象传入TextView的setText()方法中。
*/
TextView textView1 = (TextView) findViewById(R.id.my_text_view_html);
String text = "Visit <a href=\"http://www.hao123.com/\">www.baidu.com</a>";
textView1.setText(Html.fromHtml(text));
//点击链接将跳转到相应的网页
textView1.setMovementMethod(LinkMovementMethod.getInstance());
/**
* 我们使用SpannableString类创建一个Spanned对象(SpannableString是Spanned的子类),并通过文本中
* 字符的索引指定不同的跨度(span), 不同的跨度将文本内容分成不同的部分,然后通过SpannableString
* 就可以为不同部分指定不同的样式。
*/
Spannable text2 = new SpannableString("Hello World, MainActivity!");
text2.setSpan(new BackgroundColorSpan(Color.RED), 1, 4, 0);
text2.setSpan(new BackgroundColorSpan(Color.BLUE), 5, 9, 0);
((TextView) findViewById(R.id.my_text_view_spannable)).setText(text2);
}
}
TextView是Android提供的一个简单却功能强大的UI控件。我们可以在应用程序中通过多种方法使用不同样式的文本,尽管TextView并不支持所有HTML标签,但是用于格式化文本内容已经足够了。