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,可以直接使用此类重写需要的方法。

XRichText的更多相关文章

  1. Android开源项目库汇总

    最近做了一个Android开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. 抽 ...

  2. GitHub上受欢迎的Android UI Library

    GitHub上受欢迎的Android UI Library 内容 抽屉菜单 ListView WebView SwitchButton 按钮 点赞按钮 进度条 TabLayout 图标 下拉刷新 Vi ...

  3. Android UI相关开源项目库汇总

    最近做了一个Android UI相关开源项目库汇总,里面集合了OpenDigg 上的优质的Android开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个st ...

  4. GitHub 上受欢迎的 Android UI Library 整理二

    通知 https://github.com/Tapadoo/Alerter ★2528 - 克服Toast和Snackbar的限制https://github.com/wenmingvs/Notify ...

  5. 最新最全的 Android 开源项目合集

    原文链接:https://github.com/opendigg/awesome-github-android-ui 在 Github 上做了一个很新的 Android 开发相关开源项目汇总,涉及到 ...

  6. GitHub 上受欢迎的 Android UI Library整理

    https://github.com/Tapadoo/Alerter ★2528 - 克服Toast和Snackbar的限制 https://github.com/wenmingvs/NotifyUt ...

  7. 2019最新Android常用开源库总结(附带github链接)

    前言 收集了一些比较常见的开源库,特此记录(已收录350+).另外,本文将持续更新,大家有关于Android 优秀的开源库,也可以在下面留言. 一 .基本控件 1.TextView HTextView ...

随机推荐

  1. Java IO流操作 (I)

    1.FileWriter 写数据---输出流---由控制台向文件中写数据 import java.io.FileWriter; import java.io.IOException; /* * 写数据 ...

  2. INNER JOIN & OUTER JOIN

    INNER JOIN & OUTER JOIN 参考:sql

  3. C/C++源程序到可执行程序的过程

    源程序.cpp  预处理得到 预处理文件.i   编译得到 汇编文件.S    汇编得到 目标文件.o     链接得到 可执行文件 例子:main.cpp  fun.cpp fun.h #inclu ...

  4. 为什么声明了int型的变量并且直接初始化后,int型变量的地址一直在变化?

    /************************************************************************* > File Name: ptr_varia ...

  5. Ubuntu18.04 有线无法正常上网(请读完全文再进行操作)

    电脑Windows10+Ubuntu18.04双系统,一直都没问题,前段时间突然在Ubuntu系统下有线连接失败,但是在Windows下可以正常上网. 今天尝试进行了修复. 在终端通过ifconfig ...

  6. java类的实例化顺序

    1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行 2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行 3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行 4 ...

  7. 开启新项目时启动tomcat的一个小问题

    Application context 这里为啥只有是空的,才能正常启动tomcat?

  8. D - Lis on Circle Gym - 102441D (LIS + 线段树)

    There are nn people at the round gaming table. Each of them has a set of cards. Every card contains ...

  9. PAT Basic 1020 ⽉饼 (25) [贪⼼算法]

    题目 ⽉饼是中国⼈在中秋佳节时吃的⼀种传统⻝品,不同地区有许多不同⻛味的⽉饼.现给定所有种类⽉饼的库存量.总售价.以及市场的最⼤需求量,请你计算可以获得的最⼤收益是多少. 注意:销售时允许取出⼀部分库 ...

  10. UML-如何画SSD?

    1.SSD来自哪里?答:用例文本 2.如何为系统事件和操作命名? 3.SSD中的哪些需要放到词汇表中? SSD元素包含 1).操作名称 2).参数 3).返回数据 这些元素,必须要简洁.但别人可能不太 ...