XRichText是一个可以显示Html富文本的TextView。可以用于显示新闻、商品详情等场景。欢迎star、fork,提出意见。

使用

  • Gradle : compile ‘cn.droidlover:XRichText:1.0.0’
  • Github : XRichText

特别说明:

可以直接调用text方法显示html,其他的接口只是应对特殊场景的。

主要特性

  • 自定义超链接link的点击
  • 自定义图片img的点击
  • 支持链式调用
  • 图片支持三种对齐方式(左对齐、居中、右对齐)
  • 支持在图片加载前对每张图片的url、width、height、对齐方式精细调整
  • 内置图片下载器
  • 可自定义图片下载器,如使用universal image loader、Picasso、Glide等

实现原理

  • spanned
  • 线程池
  • 自定义ImageGetter

示例

1
2
3
4
5
<cn.droidlover.xrichtext.XRichText
android:id="@+id/richText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp" />

在Java中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
richText
.callback(new XRichText.BaseClickCallback() {
public boolean (String url)大专栏  XRichTextan> {
showMsg(url);
return true;
}
public void onImageClick(List<String> urlList, int position) {
super.onImageClick(urlList, position);
showMsg("图片:" + position);
}
public void onFix(XRichText.ImageHolder holder) {
super.onFix(holder);
if (holder.getPosition() % 3 == 0) {
holder.setStyle(XRichText.Style.LEFT);
} else if (holder.getPosition() % 3 == 1) {
holder.setStyle(XRichText.Style.CENTER);
} else {
holder.setStyle(XRichText.Style.RIGHT);
}
holder.setWidth(550);
holder.setHeight(400);
}
})
.imageDownloader(new ImageLoader() {
public Bitmap getBitmap(String url) throws IOException {
return UILKit.getLoader().loadImageSync(url);
}
})
.text(TEXT);

api说明

  • onLinkClick(String url) 当点击超链接时触发,url为点击的url
  • onImageClick(List urlList, int position) 当点击图片时触发,urlList为图片的url集合,position为被点击的位置,从0开始
  • onFix(XRichText.ImageHolder holder) 当图片加载前回调此方法,通过holder可以调整图片的src、width、height、style(对齐方式)
  • 设置html内容时,务必调用text方法
  • imageDownloader(ImageLoader loader)可以自定义图片加载器,库中已有默认实现。可以根据项目情况定义加载器,如三方库UIL、Picasso等,只需实现ImageLoader接口就行。getBitmap方法已经在线程池中,所以自定义loader时不必考虑线程问题.
  • ClickCallback接口有默认实现类BaseClickCallback,可以直接使用此类重写需要的方法。

最新文章

  1. webpack react基础配置一
  2. C# 类:类型 , 数学:类型
  3. UIApplication是什么
  4. 杭电ACM 1178
  5. UML精粹1 - 简介
  6. Mac OS 配置PHP + mysql 环境
  7. CDN 和 DNS
  8. 【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理
  9. java web 学习四(http协议)
  10. 1710: [Usaco2007 Open]Cheappal 廉价回文
  11. 有空可以对C#尝一下鲜,WCF看上去很诱人(跨进程、跨机器、跨子网,跨企业网乃至跨Internet的分布式服务)
  12. laravel中间件源码分析
  13. 使用POI 导入excel
  14. Python之路: 模版篇
  15. 【ThinkPHP框架学习 】(1) --- thinkphp 3.2.3 验证码验证使用教程分享
  16. 利用object.defineProperty实现数据与视图绑定
  17. scrapy 命令行
  18. http理解
  19. python Polygon模块安装
  20. Java开发万年历

热门文章

  1. 201703-1 分蛋糕 Java
  2. 吴裕雄--天生自然 JAVASCRIPT开发学习: 变量提升
  3. jetty配置远程debug
  4. mysql的常见面试问题
  5. ZJNU 2342 - 夏华献要回家
  6. MySQL--mysql中You can’t specify target table for update in FROM clause错误解决方法
  7. Python说文解字_杂谈07
  8. 杂记 -- 关于less在vue项目中的使用
  9. Spring Bean的生命周期、Spring MVC的工作流程、IOC,AOP
  10. Mybatis 使用分页查询亿级数据 性能问题 DB使用ORACLE