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. 主要代码
2. 程序执行结果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());
<-点击连接到另外一个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 属性[关键]
[注意]这几个属性是关键的属性: singleLine 、ellipsize 、marqueeRepeatLimit 、focusable、focusableInTouchMode<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" />
2. 程序执行结果
<-点击"网易"连接到网易主界面->