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
@Override
public RequestBuilder<Drawable> load(@NonNull AsyncDrawable drawable) {
return Glide.with(requireActivity()).load(drawable.getDestination());
}
@Override
public 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);
图片、表格暂未测试。
三、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);
但是我加载不出来~感觉不好用。
如果上面的都不好使,可以直接试试这个