Android 解析加载Markdown格式的文本

发布于:2025-03-11 ⋅ 阅读:(27) ⋅ 点赞:(0)

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" +
                "![明天天气图标](https://www.baidu.com/img/flexible/logo/pc/result.png) <!-- 请替换为实际的图片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);        

图片、表格暂未测试。

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库地址


网站公告

今日签到

点亮在社区的每一天
去签到