使用textview显示html里面的图文混排效果,并且图片可点击索引到
2014-01-23 15:40
696 查看
由于公司要求,需要将网页版的论坛网站改版成手机版的app。
服务器后台过滤掉了论坛帖子的不需要的html标签信息,只留了<img>和\n\r标签。
<img>使用Html.fromHtml可以解析出来图片信息,\n\r在android textview中直接支持换行
所以需要图文混排效果显示,需要服务器断将帖子信息格式规范下,不需要的过滤,只保留<img>标签,需要回车换行的需要加上\n\r。
之前我发了个帖子“使用LevelListDrawable在textview中显示多张图片”
由于
Html.fromHtml(String source,
ImageGetter imageGetter,
TagHandler tagHandler)
需要传入的参数有source为带<img>等textview支持内容字符串,imagegetter为获取图片的类,里面有getdrawable方法;taghandler为tag标签的控制类,里面有handletag方法;
我们在重写的imagegetter类里使用异步下载,并且使用了Map<String, SoftReference<Bitmap>> mBitmapCache;实现了缓存处理,解决翻页的时候不需要再去加载,直接找内存里是否缓存了。如果图片需要居中显示,只要让textview.setGravity(Gravity.Center_Horiz....);
在重写的taghandler我是这样定义这个重写的类的
class MSpan extends ClickableSpan implements OnClickListener
可以在onclick方法里实现textview里面图片的点击事件,在handletag里面实现output.setSpan(new MSpan(tt), sIndex, eIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
将参数传入。
最后注意要实现点击效果,必须要textview。setclickable和setMovementMethod(LinkMovementMethod.getInstance());才行。
之前有个下划线问题,无法去除下划线
//无下划线超链接,使用textColorLink、textColorHighlight分别修改超链接前景色和按下时的颜色
private class NoLineClickSpan extends ClickableSpan {
SpannableString text;
public NoLineClickSpan(SpannableString text) {
super();
this.text = text;
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(Color.BLACK);
ds.setUnderlineText(false);
}
@Override
public void onClick(View widget) {
//点击超链接时调用
// processHyperLinkClick(text);
}
}
整理整理挂到github上去做个库开源。
服务器后台过滤掉了论坛帖子的不需要的html标签信息,只留了<img>和\n\r标签。
<img>使用Html.fromHtml可以解析出来图片信息,\n\r在android textview中直接支持换行
所以需要图文混排效果显示,需要服务器断将帖子信息格式规范下,不需要的过滤,只保留<img>标签,需要回车换行的需要加上\n\r。
之前我发了个帖子“使用LevelListDrawable在textview中显示多张图片”
由于
Html.fromHtml(String source,
ImageGetter imageGetter,
TagHandler tagHandler)
需要传入的参数有source为带<img>等textview支持内容字符串,imagegetter为获取图片的类,里面有getdrawable方法;taghandler为tag标签的控制类,里面有handletag方法;
我们在重写的imagegetter类里使用异步下载,并且使用了Map<String, SoftReference<Bitmap>> mBitmapCache;实现了缓存处理,解决翻页的时候不需要再去加载,直接找内存里是否缓存了。如果图片需要居中显示,只要让textview.setGravity(Gravity.Center_Horiz....);
在重写的taghandler我是这样定义这个重写的类的
class MSpan extends ClickableSpan implements OnClickListener
可以在onclick方法里实现textview里面图片的点击事件,在handletag里面实现output.setSpan(new MSpan(tt), sIndex, eIndex,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
将参数传入。
最后注意要实现点击效果,必须要textview。setclickable和setMovementMethod(LinkMovementMethod.getInstance());才行。
之前有个下划线问题,无法去除下划线
//无下划线超链接,使用textColorLink、textColorHighlight分别修改超链接前景色和按下时的颜色
private class NoLineClickSpan extends ClickableSpan {
SpannableString text;
public NoLineClickSpan(SpannableString text) {
super();
this.text = text;
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(Color.BLACK);
ds.setUnderlineText(false);
}
@Override
public void onClick(View widget) {
//点击超链接时调用
// processHyperLinkClick(text);
}
}
ClickableSpan clickspan = new NoLineClickSpan(msp); msp.setSpan(clickspan, 0, msp.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);可以解决去掉下划线!
整理整理挂到github上去做个库开源。
相关文章推荐
- 解决editplus新建html网页中汉字的乱码问题
- html dom节点操作(获取/修改/添加或删除)
- 那些在开发中用到的正则表达式
- 映射的示例
- html入门
- MVC4 Razor @hepler 让cshtml方法变成类 进行多视图调用
- 【项目开发】HTML中使背景图片自适应浏览器大小
- html标签内容为纯英文字符或数字时的溢出处理
- html dom节点操作(获取/修改/添加或删除)
- html基本结构
- openerp 实现Web Client上的html报表直接打印
- HTML Canvas 鼠标画图
- html-form表单
- HTML table技巧
- HTML页面规范
- HTML 字符实体
- html to pdf - 使用Wkhtmltopdf.exe - 实现,可导出需登录的页面
- HTML学习
- findmaven.net vs findjar.com-log4j的HtmlLayout定制
- HTML语法