TextView如何产生丰富的文本。
显示文本
- <font>设置颜色和字体
- <big/> 设置大小号
- <small/> 设置小号
- <i/> <b/> 设置斜体,粗体
- <a/>链接地址
- <img/> 插入图片
-
使用实例
String html = "<font color='red'>我爱android</font><br>";
html += "<font color='blue'><big><i>新的测试</i></big></font><p>";
html += "<big><a href='http://www.baidu.com'>百度</a></big>";
CharSequence mychr = Html.fromHtml(html);
tv1.setText(Html.fromHtml(html));
tv1.setMovementMethod(LinkMovementMethod.getInstance()); //点击的时候产生超链接。
String text = "我的url: http://www.sina.com\n";
text += "我的email: 123436059@qq.com\n";
text += "我的电话: 1868480621";
tv2.setText(text);
tv2.setMovementMethod(LinkMovementMethod.getInstance());
注意2个方法,一个是html格式的使用。Html.fromHtml(html)。
一个是产生超链接,必须要在textview里设置一个属性 == android:autoLink="all" == 方能生效。
显示表情和文本
显示图片的要点:
- 利用反射得到资源名
- imageget的使用
-
使用实例
public int getResoureId(String name) {
try {
//根据资源id的变量名获得Field对象,使用反射机制来实现
Field field = R.drawable.class.getField(name);
//取得并返回资源的id的字段(静态变量)
return Integer.parseInt(field.get(null).toString());
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
//------------------------------------
String html = "图像1<img src='m10'/>图像2<img src='m12'/>";
html += "图像3<img src='m13'/><p>图像4<a href='http://www.baidu.com'><img src='m10'/></a>";
CharSequence text = Html.fromHtml(html, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
//获得系统资源的信息。
if (getResoureId(source) == 0) {
Log.d("taxi", "erro");
return null;
}
Drawable drawable = getResources().getDrawable(getResoureId(source));
return drawable;
}
}, null);
tvIcion.setText(text);
tvIcion.setMovementMethod(LinkMovementMethod.getInstance());
关键是这2个方法的运用。
textview跳转activity(点击局部跳转)
关键以下4点:
- SpannableString的使用
- SpannableString.setSpan
- ClickableSpan()
- setMovementMethod(LinkMovementMethod.getInstance())的使用
-
使用实例
SpannableString mystring1 = new SpannableString(text1);
SpannableString mystring2 = new SpannableString(text2);
mystring1.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
startActivity(new Intent(context, TestA_Activity.class));
}
}, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mystring2.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Log.d("taxi", "点击了跳转");
}
}, text2.indexOf("activity"), text2.indexOf("activity") + "activity".length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv1.setText(mystring1);
tv1.setMovementMethod(LinkMovementMethod.getInstance());
tv2.setText(mystring2);
tv2.setMovementMethod(LinkMovementMethod.getInstance());
点击事件的获取。
跑马灯效果
在看代码前,先讲解一下等下会碰到的属性:
android:elipsize: 如果文本长度大于TextView的显示长度,则隐藏那一部分,可赋值为:none(不隐藏)、start(隐藏开始)、middle(隐藏中间)、end(隐藏结束)、marquee(滚动效果)。
android:marqueRepeatLimit:设定需要重复动画的次数,传递一个int值,-1为无限循环。
android:focusable:是否允许获得焦点,传递一个bool值。
android:focusableInTouchMode:是否在获得焦点时对控件有联系,传递一个bool值。
关键的就是这几个属性。
==tv_anim.setMovementMethod(LinkMovementMethod.getInstance());在代码中如果设置了这个属性,也会使跑马灯效果失效。==
网友评论