zzhoujay / richtext Goto Github PK
View Code? Open in Web Editor NEWAndroid平台下的富文本解析器,支持Html和Markdown
License: MIT License
Android平台下的富文本解析器,支持Html和Markdown
License: MIT License
测试的内容是知乎手机网页上看到的一个回答
链接
实际使用过程中我用来显示的String如下
汉仪喵魂体!<br>自己写了小半年的手写字体刚上线,自我感觉还是值得推荐的!<br>我先给大家图文并茂地讲讲这字儿怎么值得推荐!<br><img src="https://pic3.zhimg.com/b6a1334f561eb6f388d5321402ee6c0e_b.jpg" data-rawwidth="800" data-rawheight="3266" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.zhimg.com/b6a1334f561eb6f388d5321402ee6c0e_r.jpg"><img src="https://pic3.zhimg.com/13fc1f61deeea1e4d5b1fd4d36b30b82_b.jpg" data-rawwidth="801" data-rawheight="6071" class="origin_image zh-lightbox-thumb" width="801" data-original="https://pic3.zhimg.com/13fc1f61deeea1e4d5b1fd4d36b30b82_r.jpg"><img src="https://pic3.zhimg.com/07fcb9ad57c568d2d41466616fdc6022_b.jpg" data-rawwidth="801" data-rawheight="5475" class="origin_image zh-lightbox-thumb" width="801" data-original="https://pic3.zhimg.com/07fcb9ad57c568d2d41466616fdc6022_r.jpg"><img src="https://pic1.zhimg.com/a5d631cc0a6c9c5b38c6243ef89e1794_b.jpg" data-rawwidth="801" data-rawheight="7352" class="origin_image zh-lightbox-thumb" width="801" data-original="https://pic1.zhimg.com/a5d631cc0a6c9c5b38c6243ef89e1794_r.jpg"><img src="https://pic4.zhimg.com/47188b45390ec15b1fd290c2a472d043_b.jpg" data-rawwidth="801" data-rawheight="5358" class="origin_image zh-lightbox-thumb" width="801" data-original="https://pic4.zhimg.com/47188b45390ec15b1fd290c2a472d043_r.jpg"><br>字库加标点接近一万字<br><br>我的极速是除了吃饭睡觉<br>一刻不停的写<br>一天最多300字<br>极速一天之后第二天就要最少崩溃半天<br>哈哈哈哈哈<br><br>上半年因为出书有点拖延<br><br>到临交稿的两个月剩的有点多<br>我只好回老家闭关写<br>(有人做饭啊没有干扰还)<br>有一个半月的时间里<br>每天都<br>从天亮写到天黑<br>从睁眼写到闭眼<br><br>微信朋友圈还合作什么的<br>啥也不管了不回了<br><br>特别的酸爽<br>坚持下来之后感觉耐力提升了一百倍<br><br>之后谁再说什么事儿忍不了抛不下<br>我就特别想说<br>你去抛下一切功名利禄社交合作<br>写俩月字库试试<br>之后什么矫情都没了<br><br>云淡风轻的<br><img src="https://pic1.zhimg.com/00f14a0147fd336a6c34c7817f4f096c_b.jpg" data-rawwidth="801" data-rawheight="3178" class="origin_image zh-lightbox-thumb" width="801" data-original="https://pic1.zhimg.com/00f14a0147fd336a6c34c7817f4f096c_r.jpg"><img src="https://pic2.zhimg.com/0d1a5113e3ea1bb379b56faeba908f71_b.jpg" data-rawwidth="600" data-rawheight="600" class="origin_image zh-lightbox-thumb" width="600" data-original="https://pic2.zhimg.com/0d1a5113e3ea1bb379b56faeba908f71_r.jpg">啊……<br>最近又有一个字体的想法……<br>还蛮好看……<br>但是写一套太累辣!
你好,gradle中集成你的最新2.0.13,同步显示v23里面com.android.support/appcompat-v7/23.0.1/res/values-v23/values-v23.xml找不到,我项目中的编译版本和版本工具都是22的,target也是22,升级成23会带来很多问题,想请问一下,可不可以把你的架包版本降低呢?
或者可以支持自定义textview吗?
html碰到li标签,未自动换行
为什么每张图片显示都是另起一行呢?
图片和文字能否在同一行显示,当图片高度大于文字高度,文字居中显示,当文字高度大于图片高度,图片居中显示。
这个能实现么?要怎么处理呢?
没有处理图片的格式,比如大小、居中等样式一律无效啊
请问此富文本text加载网络图片是用的什么呢? 可以自己调用glide吗? 我试了一下加载不出这种[img src]格式的图片
貌似ul li ol等不支持,,,,这个应该是富文本显示最基本的吧
就是gradle 下载的时候 编译不通过 [应该是你的版本太高 但是改成高版本以后 我的项目中估计是android 低版本支持的方法 都不支持了 所以你富文本组件 能不能降低版本呀
)
发现图片的点击事件有几个问题:
1.GifActivity中点击第一张图,图片上方会出现大约5像素的背景条
2.如果autoFix(false),textview的宽也设置wrap_content,要显示的内容中有两张图片垂直排列,第二张图片的宽度比第一张图片小,这时候第二张图的点击宽度是第一张图的宽度,也就是点击第二张图右边小于第一张图片宽度的空白的地方也会响应点击事件
3.点击图片手指移动到其他地方再松开,也会响应点击事件,跟一般OnClick事件不一样
望解决!!!
我在布局里面:
<zhou.widget.RichText
android:id="@+id/tv_content_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/d10"
android:layout_toLeftOf="@id/iv_avatar_right"
android:gravity="right|center_vertical"
android:maxWidth="@dimen/d350"
app:zhou_default_height="@dimen/d50"
app:zhou_default_width="@dimen/d50"
android:layout_alignTop="@+id/iv_avatar_right"
android:textColor="@color/white"
app:zhou_errorImage="@drawable/icon_sentence_next"
app:zhou_placeHolder="@drawable/icon_sentence_next"
android:textSize="@dimen/text_size_27"/>
代码里面将本地资源转换为drawable的形式显示出来,但是没有看到相应的图片显示
如题
Hey! This is a quite nice library. Must the library min sdk be 15? I want to use it in my project whose min sdk is 14.
首次打开前面几张图片不显示,不知道为什么,下面3张会显示,好像我用AsyncTask 重写了请求的就都显示,这是为什么?
尝试了一下如果不是在ListView中,一切正常,但是如果在ListView的cell中不会显示图片。
图片过大后出现的问题
代码部分:
RichText.from(quanziArticle.getContent()).autoFix(false).fix(new ImageFixCallback() {
@OverRide
public void onFix(ImageHolder holder, boolean imageReady) {
if (holder.getHeight() < AndroidUtils.getHeight() && holder.getWidth() < AndroidUtils.getWidth()) {
holder.setAutoFix(true);
} else {
holder.setHeight(AndroidUtils.getHeight());
holder.setWidth(AndroidUtils.getWidth());
}
}
}).into(mArticleContent);
RT,这个确实是会出现,不知道是为啥
PriorityExecutor: Request threw uncaught throwable java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Failed to allocate a 1935192 byte allocation with 1761372 free bytes and 1720KB until OOM at java.util.concurrent.FutureTask.report(FutureTask.java:93) at java.util.concurrent.FutureTask.get(FutureTask.java:163) at com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor.afterExecute(FifoPriorityThreadPoolExecutor.java:96) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1120) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) at com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor$DefaultThreadFactory$1.run(FifoPriorityThreadPoolExecutor.java:118) Caused by: java.lang.OutOfMemoryError: Failed to allocate a 1935192 byte allocation with 1761372 free bytes and 1720KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:635) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:611) at com.bumptech.glide.load.resource.bitmap.Downsampler.decodeStream(Downsampler.java:329) at com.bumptech.glide.load.resource.bitmap.Downsampler.downsampleWithSize(Downsampler.java:220) at com.bumptech.glide.load.resource.bitmap.Downsampler.decode(Downsampler.java:153) at com.bumptech.glide.load.resource.bitmap.StreamBitmapDecoder.decode(StreamBitmapDecoder.java:50) at com.bumptech.glide.load.resource.bitmap.StreamBitmapDecoder.decode(StreamBitmapDecoder.java:19) at com.bumptech.glide.load.resource.bitmap.ImageVideoBitmapDecoder.decode(ImageVideoBitmapDecoder.java:39) at com.bumptech.glide.load.resource.bitmap.ImageVideoBitmapDecoder.decode(ImageVideoBitmapDecoder.java:20) at com.bumptech.glide.load.engine.DecodeJob.decodeFromSourceData(DecodeJob.java:190) at com.bumptech.glide.load.engine.DecodeJob.decodeSource(DecodeJob.java:177) at com.bumptech.glide.load.engine.DecodeJob.decodeFromSource(DecodeJob.java:128) at com.bumptech.glide.load.engine.EngineRunnable.decodeFromSource(EngineRunnable.java:122) at com.bumptech.glide.load.engine.EngineRunnable.decode(EngineRunnable.java:101) at com.bumptech.glide.load.engine.EngineRunnable.run(EngineRunnable.java:58) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) at com.bumptech.glide.load.engine.executor.FifoPriorityThreadPoolExecutor$DefaultThreadFactory$1.run(FifoPriorityThreadPoolExecutor.java:118)
I don't why ...
RecyclerView中显示gif时有严重的图片错位问题
我现在改变了private final Html.ImageGetter asyncImageGetter = new Html.ImageGetter() {
@OverRide
public Drawable getDrawable(String source) {
这个方法,但是只能做到本地静态图片,如果我想支持本地GIF图片,,是应该修改哪个方法呢?
非常感谢你不厌其烦的回答
我找到了,是修改 public Drawable getDrawable(String source)
网络图片大部分情况下加载都不成功,有解决方案吗
这个问题似乎还没解决.我
htmlTv.setImageFixListener(new RichText.ImageFixListener() {
@Override
public void onFix(RichText.ImageHolder holder) {
if (holder.getWidth() > 10 || holder.getHeight() > 10) {
int width = getScreenWidth(getApplicationContext());
int height = width;
holder.setWidth(width);
holder.setHeight(height);
holder.setScaleType(RichText.ImageHolder.CENTER_INSIDE);
}
}
});
htmlTv.setRichText(article.getContent());
效果还是没有占满一个频幕宽度。是我代码写的有问题?
能否有选择只显示文字 不显示图片呢?
你好,我在使用例子时,下面的html时报错了: Height must be positive number or 0.
请问需要如何修改?
代码如下:
private static final String TEXT_HTML ="<img src=\"http://www.chn-zj.com/upload/image/Wc2cw3CZ.png\" alt=\"深圳朗锐智建有限公司\" width=\"288\" height=\"48\"/><Br/><div id=\"sta_content\"> \n"+
" <p style=\"text-indent:2em;\"> <span style=\"font-size:14px;\"><span style=\"line-height:2;\">公司简介:</span><br> <span style=\"line-height:2;\"> 深圳朗锐智建科技有限公司,即</span><span style=\"line-height:2;\">智能建筑物联网综合方案运营商。</span></span> </p> \n"+
" <p style=\"text-indent:2em;\"> <span style=\"font-size:14px;\"></span><span style=\"font-size:14px;line-height:2;\"> </span><span style=\"font-size:14px;line-height:2;\">专注智慧建筑,以物联网为骨干,以智能终端为神经元,以云平台为决策思维,实现幸福城市建</span><span style=\"font-size:14px;line-height:2;\">筑智慧化,提升建筑生态环境品质,培育具生命的活体建筑。</span> </p> \n"+
" <p style=\"text-indent:2em;\"> <span style=\"font-size:14px;\"><span style=\"line-height:2;\"> </span><span><span style=\"line-height:2;\">公司目前自主研发多项</span></span></span><span style=\"font-size:14px;line-height:28px;\">产品</span><span style=\"font-size:14px;text-indent:2em;line-height:2;\">,包括楼宇自动化系统、BMS楼宇管理系统、大型公建能耗监管平台、多功能能耗数据采集器、智能控制器等。公司以筑造智能科技平台,在建筑物联网行业中成为行业领军企业</span><span style=\"font-size:14px;text-indent:2em;line-height:2;\">。</span> </p> \n"+
"</div>";
text.setRichText(TEXT_HTML);
报错:
错误位置:
RichText.java:265行
if (holder.width != -1 && holder.height != -1) {
load.resize(holder.width, holder.height);
}
java.lang.RuntimeException: Unable to start activity ComponentInfo{zhou.demo/zhou.demo.MainActivity}: java.lang.IllegalArgumentException: Height must be positive number or 0.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2581)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2656)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1512)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5691)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
Caused by: java.lang.IllegalArgumentException: Height must be positive number or 0.
at com.squareup.picasso.Request$Builder.resize(Request.java:302)
at com.squareup.picasso.RequestCreator.resize(RequestCreator.java:219)
at zhou.widget.RichText$2.getDrawable(RichText.java:265)
at android.text.HtmlToSpannedConverter.startImg(Html.java:634)
at android.text.HtmlToSpannedConverter.handleStartTag(Html.java:520)
at android.text.HtmlToSpannedConverter.startElement(Html.java:761)
at org.ccil.cowan.tagsoup.Parser.push(Parser.java:794)
at org.ccil.cowan.tagsoup.Parser.rectify(Parser.java:1061)
at org.ccil.cowan.tagsoup.Parser.stage(Parser.java:1026)
at org.ccil.cowan.tagsoup.HTMLScanner.scan(HTMLScanner.java:632)
at org.ccil.cowan.tagsoup.Parser.parse(Parser.java:449)
at android.text.HtmlToSpannedConverter.convert(Html.java:442)
at android.text.Html.fromHtml(Html.java:136)
at zhou.widget.RichText.setRichText(RichText.java:102)
at zhou.demo.MainActivity.onCreate(MainActivity.java:68)
at android.app.Activity.performCreate(Activity.java:6142)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1115)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2528)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2656)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1512)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5691)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
图片点击事件能否支持长按?
我试了用Edittext也是可以显示的,但是保存后格式没了,都是纯文字,而且图片也没了
请问能否支持html格式文本编辑?编辑后保存为html格式文本?
如果您没有时间,能否给个思路呢?
t E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at com.zzhoujay.richtext.RichText$ImageTargetGif.recycle(RichText.java:367)
at com.zzhoujay.richtext.RichText.recycleTarget(RichText.java:172)
at com.zzhoujay.richtext.RichText.access$1100(RichText.java:57)
at com.zzhoujay.richtext.RichText$ImageTargetGif.onViewDetachedFromWindow(RichText.java:407)
at android.view.View.dispatchDetachedFromWindow(View.java:11983)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2530)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2530)
at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2530)
编辑RichText的功能有打算做么?
java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.view.ViewGroup$MarginLayoutParams
at com.zzhoujay.richtext.RichText.getRealWidth(RichText.java:369)
我看你调用了Html.fromHtml方法去解析html格式的文本,这样会导致超链接都是UrlSpan,点击后都执行跳转到浏览器的方法,能够在不影响整体显示按html显示而去实现点击链接去自定义行为吗
在recylerview 的holder中使用richtext 导致点击到textview区域,点击事件无法响应。
长按图片回调和长按复制文字会冲突
"dsad <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVwAAAB+CAYAAABoBamlAAAMGGlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU0kXx+eVFEISSiACUkJvgvQqvXekg42QBAglhEBQsSOLCq4FFR
数据格式大概是长这样的.....
以前的版本可以,现在的不行了,authplay也不管用
遇到
没有自动换行这个能设置同一个Textview中不同字的大小吗
RichText有.error(Drawable d)和.placeHolder(Drawable d)这两个方法,可以再提供两个参数都是resId的方法吗?
RichText.from(IMAGE1).autoFix(false).error(R.mipmap.ic_launcher)设置好后并不能显示吗,而是点击一下图片所在位置才能正常显示
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.