Android 解析加载Markdown格式的文本
一、noties.markwon库(推荐)
依赖
implementation 'io.noties.markwon:core:4.6.2'
//加载图片
implementation 'io.noties.markwon:image:4.6.2'
implementation 'io.noties.markwon:image-glide:4.6.2'
使用
Markwon markwon = Markwon.create(requireContext());
markwon.setMarkdown(binding.tvTest, s);
加载图片
String s2 = "# 明天天气预报\n" +" \n" +"**日期**:2023年3月20日\n" +" \n" +"**天气状况**:晴朗\n" +" \n" +" <!-- 请替换为实际的图片URL -->\n" +" \n" +"**温度范围**:最低10°C,最高22°C\n" +" \n" +"**风向**:东南风,风力2级\n" +" \n" +"**湿度**:50%";
Markwon markwon = Markwon.builder(requireContext()).usePlugin(GlideImagesPlugin.create(requireContext())).usePlugin(GlideImagesPlugin.create(Glide.with(this))).usePlugin(GlideImagesPlugin.create(new GlideImagesPlugin.GlideStore() {@NonNull@Overridepublic RequestBuilder<Drawable> load(@NonNull AsyncDrawable drawable) {return Glide.with(requireActivity()).load(drawable.getDestination());}@Overridepublic void cancel(@NonNull Target<?> target) {Glide.with(requireActivity()).clear(target);}})).build();
markwon.setMarkdown(binding.tvTest, s2);
图片能加载出来!
二、yydcdut:markdown-processor库
导入依赖
implementation 'com.yydcdut:markdown-processor:0.1.3'
使用
String s = "# 明天天气预报\n" +" \n" +"**日期**:2023年3月20日\n" +" \n" +"**天气状况**:晴朗\n" +" \n" +"**温度范围**:最低10°C,最高22°C\n" +" \n" +"**风向**:东南风,风力2级\n" +" \n" +"**湿度**:50%";
MarkdownProcessor markdownProcessor = new MarkdownProcessor(requireActivity());
markdownProcessor.factory(TextFactory.create());//必须设置
markdownProcessor.config(new MarkdownConfiguration.Builder(requireContext()).build());
CharSequence parse = markdownProcessor.parse(s2);
binding.tvTest.setText(parse);
图片、表格暂未测试。
RxMarkdown
三、zzhoujay.richtext库
依赖
implementation 'com.zzhoujay.richtext:richtext:3.0.7' //RichText资源库
使用
RichText.initCacheDir(context); //设置缓存目录,不设置会报错
RichText.from(string).bind(context).showBorder(false).size(ImageHolder.MATCH_PARENT, ImageHolder.WRAP_CONTENT).into(textview);
但是我加载不出来~感觉不好用。
如果上面的都不好使,可以直接试试这个
四、参考链接:
Android TextView 加载MarkDown 格式的数据,支持富文本格式
GitHub
noties库地址