一个显示富文本的 TextView
MosLdy
8年前
<h2><strong>XRichText</strong></h2> <p>XRichText是一个可以显示Html富文本的TextView。可以用于显示新闻、商品详情等场景。</p> <p style="text-align: center;"><img alt="一个显示富文本的 TextView" src="https://simg.open-open.com/show/cecc111cc45036e373f4ae45a2211ae8.gif"></p> <h3><strong>使用</strong></h3> <ul> <li>Gradle : compile 'cn.droidlover:XRichText:1.0.0'</li> <li>Github :XRichText</li> </ul> <h3><strong>主要特性</strong></h3> <ul> <li>自定义超链接link的点击</li> <li>自定义图片img的点击</li> <li>支持链式调用</li> <li>图片支持三种对齐方式(左对齐、居中、右对齐)</li> <li>支持在图片加载前对每张图片的url、width、height、对齐方式精细调整</li> <li>内置图片下载器</li> <li>可自定义图片下载器,如使用universal image loader、Picasso、Glide等</li> </ul> <h3><strong>实现原理</strong></h3> <ul> <li>spanned</li> <li>线程池</li> <li>自定义ImageGetter</li> </ul> <h3><strong>示例</strong></h3> <pre> <cn.droidlover.xrichtext.XRichText android:id="@+id/richText" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" /></pre> <p>在Java中:</p> <pre> richText .callback(new XRichText.BaseClickCallback() { @Override public boolean onLinkClick(String url) { showMsg(url); return true; } @Override public void onImageClick(List<String> urlList, int position) { super.onImageClick(urlList, position); showMsg("图片:" + position); } @Override 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() { @Override public Bitmap getBitmap(String url) throws IOException { return UILKit.getLoader().loadImageSync(url); } }) .text(TEXT);</pre> <h3><strong>api说明</strong></h3> <ul> <li>onLinkClick(String url) 当点击超链接时触发,url为点击的url</li> <li>onImageClick(List urlList, int position) 当点击图片时触发,urlList为图片的url集合,position为被点击的位置,从0开始</li> <li>onFix(XRichText.ImageHolder holder) 当图片加载前回调此方法,通过holder可以调整图片的src、width、height、style(对齐方式)</li> <li><strong>设置html内容时,务必调用text方法</strong></li> <li>imageDownloader(ImageLoader loader)可以自定义图片加载器,库中已有默认实现。可以根据项目情况定义加载器,如三方库UIL、Picasso等,只需实现ImageLoader接口就行。 getBitmap方法已经在线程池中,所以自定义loader时不必考虑线程问题.</li> <li>ClickCallback接口有默认实现类BaseClickCallback,可以直接使用此类重写需要的方法。</li> </ul> <p> </p> <p> </p>