1. TextView简介
TextView主要是在android中实现文字说明等功能。主要实现功能如下:
1. 显示丰富的文本(URL、字体大小、颜色等): 在TextView中预定了一些类似HTML的标签,通过标签可以使TextView控件显得不懂颜色、大小、字体的文字。
<font>:设置颜色和字体
<big>:设置大小号
<small>:设置小号
<i>\<b>:斜体、粗体
<a>:链接地址
<img>:插入图片
2. 使用这些标签可以用Html.fromHtml方法将这些标签的字符串转换成Charsequenece对象,然后在TextView中进行设置。如果想在显示的文本中将URL地址、邮箱地址、电话产生超链接的效果可以使用android:autoLink来设置。
该属性如下:
2. 实战案例
1). 如何显示文本(URL、不同大小、字体、颜色的文本)
1. 主要代码
//添加一段html的标志
String html = "<font color = 'red>I love android</font><br>";
html += "<font color='#0000ff'><big><i>I love android</i></big></font><p>";
html += "<big><a href='http://www.baidu.com'>百度</a></big>";
CharSequence charSequence = Html.fromHtml(html);
textView1.setText(charSequence);
textView1.setMovementMethod(LinkMovementMethod.getInstance()); //点击的时候产生超链接
String text = "我的URL: http://www.sina.com\n";
text+="我的email: abcd@126.com\n";
text+="我的电话: + 86 010-1234567";
textView2.setText(text);
textView2.setMovementMethod(LinkMovementMethod.getInstance());
2. 程序执行结果2). 在TextView中显示表情图像和文本
1. 主要代码
...public class TextDemo2 extends Activity {
private TextView textView;
public int getResourceId(String name) {
try {
// 根据资源的ID的变量名获得Field的对象,使用反射机制来实现
Field field = R.drawable.class.getField(name);
// 取得并返回资源的id的字段(静态变量)的值,使用反射机制
return Integer.parseInt(field.get(null).toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initComponent();
textView.setTextColor(Color.BLACK);
textView.setBackgroundColor(Color.WHITE);
textView.setTextSize(20);
String html = "图像1<img src = 'image1'>图像2<img src = 'image2'>图像3<img src = 'image3'><p>"; // <p>
// :
// 表示段落符
html += "图像4<a href = 'http://www.baidu.com'><img src = 'image4'></a>图像5<img src = 'image5'>";
/*
* 查看Html类的fromHtml()方法,从提供的html的文本返回显示成文本类型 public static Spanned
* fromHtml (String source, Html.ImageGetter imageGetter,
* Html.TagHandler tagHandler)
*/
CharSequence charSequence = Html.fromHtml(html, new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
// TODO Auto-generated method stub
// 获得系统资源的信息,比如图片信息
Drawable drawable = getResources().getDrawable(getResourceId(source));
if (source.equals("image3")) {
drawable.setBounds(0, 0, drawable.getIntrinsicHeight() / 2,
drawable.getIntrinsicHeight() / 2);
} else {
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
}
return drawable;
}
}, null);
textView.setText(charSequence);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
private void initComponent() {
textView = (TextView) this.findViewById(R.id.textview);
}
}
2. 程序执行结果
<-点击第四个图像连接到"百度"的主页->
3). 单击链接弹出Activity
1. 主要代码
String text1 = "显示Activity1"; String text2 = "显示Activity2";
//主要是用来拆分字符串
SpannableString spannableString = new SpannableString(text1);
SpannableString spannableString2 = new SpannableString(text2);
/*
* 查看文档setSpan()方法
* public void setSpan (Object what, int start, int end, int flags)
* 表示点击Text的触发范围是 start字符开始到end字符结束
*/
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Intent intent = new Intent(TextDemo3.this, Other.class);
startActivity(intent);
}
}, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString2.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// TODO Auto-generated method stub
Intent intent = new Intent(TextDemo3.this, Other.class);
startActivity(intent);
}
}, 0, text2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView1.setText(spannableString);
textView2.setText(spannableString2);
textView1.setMovementMethod(LinkMovementMethod.getInstance());
textView2.setMovementMethod(LinkMovementMethod.getInstance());
2. 程序执行结果
<-点击连接到另外一个Activity->
4). 用TextView实现跑马灯效果
1. 主要代码
String html = "<a href = 'http://www.163.com'>网易</a>科技讯 5月25日消息,据国外媒体报道,消息人士称,雅虎已经正式向新闻集团(News Corp)和沃尔特·迪斯尼公司拥有的视频服务Hulu提交收购要约。"; CharSequence charSequence = Html.fromHtml(html); textView.setText(charSequence);
textView.setMovementMethod(LinkMovementMethod.getInstance());
TextView 属性[关键]
<TextView android:id="@+id/textview" android:layout_width="fill_parent" android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="#FFFFFF"
android:textColor="#000"
android:textSize="20dp"
android:layout_margin="10dp"
android:padding="10dp" />[注意]这几个属性是关键的属性: singleLine 、ellipsize 、marqueeRepeatLimit 、focusable、focusableInTouchMode
2. 程序执行结果
<-点击"网易"连接到网易主界面->