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. linux 替换jdk指定jar包

    我的bug是:jdk1.8的安全策略和腾讯邮箱服务有冲突.我知道的解决方法: 1更换低版本安全策略相关的jar包.(windows:http://www.cnblogs.com/dennyzhangd ...

  2. winform集成cefSharp,与页面进行交互

    /// <summary> /// 为了使网页能够与winForm交互 将 com 的可访问性设置为 true /// </summary> [System.Runtime.I ...

  3. 题解 P1317 【低洼地】

    题目 这题挺简单的,没必要用数组 [分析] 需要判断的是低洼地的数量 通过对题目中图进行分析,显然可以发现低洼地的定义: 若数组中存在一个数值相同的连续区间,这个区间端点外相邻两点的数值都大于该区间的 ...

  4. Java并发分析—synchronized

    在计算机操作系统中,并发在宏观上是指在同一时间段内,同时有多道程序在运行. 一个程序可以对应一个进程或多个进程,进程有独立的存储空间.一个进程包含一个或多个线程.线程堆空间是共享的,栈空间是私有的.同 ...

  5. B - Common Divisors (codeforces)数论算法基本定理,唯一分解定理模板

    You are given an array aa consisting of nn integers. Your task is to say the number of such positive ...

  6. linux下ffmpeg环境搭建记录

    1.Linux下安装yasm 官网下载:http://yasm.tortall.net/Download.html tar -zvxf yasm-1.3.0.tar.gz cd yasm-1.3.0/ ...

  7. 和我一起从0学算法(C语言版)(二)

    第一章 排序 第三节 快速排序 快速排序是最常用的排序方法.快排运用的递归方法很有意思.掌握了这种排序方法可以在将来学习递归时更快入门.只是快排的思路与之前的排序方法相比较为复杂,再加担心上我的表达能 ...

  8. sp__helptable, sp__help******* help 存储过程

    from:  https://sqldbaknowledgeshare.wordpress.com/2014/11/27/general-help-procedures/ GENERAL HELP P ...

  9. 永久使用mybase

    (1)关闭程序 (2)找到程序的安装路径:D:\mybase\mybase\nyfedit7pro (3)打开mybase.ini 文件,7以下版本文件名称为nyfedit.ini

  10. C++读取数量不定的数据

    #include <iostream> using namespace std; int main(){ ,num=; while(cin >> num){//此表达式从标准输 ...