日期:2014-05-17  浏览次数:20706 次

android的TextView使用Html来处理图片显示、字体样式、超链接等
一、[Android实例]实现TextView里的文字有不同颜色
转eoe:http://www.eoeandroid.com/thread-4496-1-1.html
import android.text.Html;
TextView t3 = (TextView) findViewById(R.id.text3);
??????? t3.setText(
??????????? Html.fromHtml(
??????????????? "<b>text3:</b>? Text with a " +
??????????????? "<a href=\"http://www.google.com\">link</a> " +
??????????????? "created in the Java source code using HTML."));
二、TextView显示html文件中的图片
转javaeye:http://da-en.javaeye.com/blog/712415
我们知道要让TextView解析和显示Html代码。可以使用
Spanned text = Html.fromHtml(source);
tv.setText(text);
来实现,这个用起来简单方便。
但是,怎样让TextView也显示Html中<image>节点的图像呢?
我们可以看到fromHtml还有另一个重构:
fromHtml(String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
实现一下ImageGetter就可以让图片显示了:
ImageGetter imgGetter = new Html.ImageGetter() {
???????????? @Override
???????????? public Drawable getDrawable(String source) {
?????????????????? Drawable drawable = null;
?????????????????? drawable = Drawable.createFromPath(source);? // Or fetch it from the URL
?????????????????? // Important
?????????????????? drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable
???????????????????????????????? .getIntrinsicHeight());
?????????????????? return drawable;
???????????? }
};
至于TagHandler,我们这里不需要使用,可以直接传null。
参考文档:
http://tech-droid.blogspot.com/2010/06/textview-with-html-content.html英语好的朋友就直接看英文文档吧。
三、Android---文字中插入表情
??? 转载自:http://blog.163.com/spf9190@126/blog/static/50207531201091545954587/
?????? 这段时间在做一个短信项目,需要实现短信中插入表情的功能,本一位非常困难,经过一段时间的研究,发现还是比较簡単的,现在总结如下。
?????? 以短信输入框为例,短信的输入框是一个EditText,它的append方法不仅可以加入字符串,还可以添加HTML标记。以下就是使用HTML标记添加表情的具体操作。
?? 首先需要构建一个ImageGetter,作用是通过HTML标记获得对应在res目录下的图片:
?????? ImageGetter imageGetter = new ImageGetter() {?
??????? @Override
?????? public Drawable getDrawable(String source) {
?????? int id = Integer.parseInt(source);
????? //根据id从资源文件中获取图片对象
?????? Drawable d = getResources().getDrawable(id);
?????? d.setBounds(0, 0, d.getIntrinsicWidth(),d.getIntrinsicHeight());
??????? return d;
?????? }
?????? };?????????
然后就可以直接往EditText视图中添加
?????? inputLable.append(Html.fromHtml("<img src='"+clickedImageId+"'/>", imageGetter, null));?????????????????
? 其中 Html.fromHtml("<img src='"+clickedImageId+"'/>"就是HTML的图片标记,在Android中支持了部分HTML标记的使用(这方面我还在继续研究),HTML标记必须被Html.fromHtml修饰。imageGetter即为之前创建的ImageGetter类型的对象。
很简单的几句代码就解决了问题,不仅在EditText中,在TextView中同样可以这样插入图片。
效果图:

??????????????? new CharSequence[] { contact })); //替换成联系人
??????? boolean hasSubject = !TextUtils.isEmpty(subject); //主题
??????? if (hasSubject) {
??????????? buf.append(mContext.getResources().getString(R.string.inline_subject, subject)); //buff先在是 联系人 主题 XXXX????? eg wuyi <主题:dsadasdsa> 我爱我家
??????? }
??????? if (!TextUtils.isEmpty(body)) {
??????????? if (hasSubject) {
??????????????? buf.append(" - "); //如果内容有主题有就+ " - "??? eg wuyi <主题:sdsadsadsa> -
??????????? }
??????????? SmileyParser parser = SmileyParser.getInstance(); //获得表情类了哦
??????????? buf.append(parser.addSmileySpans(body)); //追查 急切关注中
??????? }
??????? if (!TextUtils.isEmpty(timestamp)) {
??????????? buf.append("\n");
??????????? int startOffset = buf.length();
??????????? // put a one pixel high spacer line between the message and the time stamp as requested
??????????? // by the spec.
??????????? //把之间的信息和时间戳的要求间隔一个像素的高线
??????????? //由规范
??????????? buf.append("\n");
??????????? buf.setSpan(new AbsoluteSizeSpan(3), startOffset, buf.length(),
??????????????????? Spannable.SPAN_EXCLUSI