Android TextView는 MarkDown 형식으로 데이터를 로드하고 서식 있는 텍스트 형식을 지원합니다.

서문: 프로젝트 개발에서 일부 텍스트를 새 줄 볼드, 이미지 링크 조정 추가 등 다양한 스타일로 표시해야 하는 경우가 종종 있습니다. 이때 대부분 Android와 함께 제공되는 Spannable을 사용합니다. 특수 스타일의 적은 수의 글꼴, Spannable 또는 html은 여전히 ​​가능합니다. 그러나 클라이언트가 복잡한 스타일의 카피라이팅을 지원해야 하는 경우 Spannable은 그다지 유연하지 않습니다. 그러면 모든 사람이 MarkDown을 사용하는 것을 생각할 것입니다. 그러나 MarkDown에 대한 Android의 기본 지원은 그다지 좋지 않으므로 일반적으로 모든 사람이 라이브러리를 가져옵니다.

온라인으로 패키징된 더 나은 라이브러리는 다음과 같습니다. RichText 및 Markwon

  1. 리치 텍스트: https://github.com/zzhoujay/RichText

Android 플랫폼의 리치 텍스트 파서
  • 스트리밍 작업

  • 낮은 침략

  • 종속성이 적고 disklrucache 만 지원 하며 v4를 지원합니다.

  • Html 및 Markdown 형식 텍스트 지원

  • 이미지 클릭 및 길게 누르기 이벤트 지원

  • 링크 클릭 이벤트 및 길게 누르기 이벤트

  • 로딩 및 로딩 오류 중 이미지 설정 지원

  • 사용자 지정 하이퍼링크에 대한 클릭 콜백 지원

  • 이미지 너비 및 높이 수정 지원

  • GIF 사진 지원

  • Base64 인코딩, 로컬 사진 및 자산 카탈로그 사진 지원

  • 자체 지원 사용자 지정 이미지 로더, 이미지 로더

  • 메모리 및 디스크 이중 버퍼링 지원

  • 사용자 지정 HTML 파서에 대한 지원이 추가되었습니다.

효과:

사용: gradle에서 참조되는 메서드:

implementation 'com.zzhoujay.richtext:richtext:3.0.7'  //RichText资源库

사용된 코드:

리치텍스트이기 때문에 내용이 많을 테니 스크롤바를 추가해야 합니다.

 <TextView
    android:id="@+id/goods_details"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

자바 코드:

 RichText.initCacheDir(GoodDetail.this); //设置缓存目录,不设置会报错
  String goods_details_content = goodsList.getString("goods_details"); //后台获取到的数据资源
 RichText.from(goods_details_content)
         .bind(GoodDetail.this)
         .showBorder(false)
         .size(ImageHolder.MATCH_PARENT, ImageHolder.WRAP_CONTENT)
         .into(goods_details);
 @Override
    protected void onDestroy() {
        super.onDestroy();
        //结束时清空内容
        RichText.clear(GoodDetail.this);
    }

2. 이용 : 마크원 : https://github.com/noties/Markwon

업데이트된 비교적 새로운 라이브러리:

마크원은 안드로이드용 마크다운 라이브러리입니다. 놀라운 commonmark-java 라이브러리 의 도움으로 commonmark-spec 에 따라 markdown을 구문 분석 하고 결과를 Android 네이티브 Spannable로 렌더링합니다. HTML은 중간 단계로 포함되지 않습니다 . WebView 가 필요하지 않습니다. 매우 빠르고 기능이 풍부하며 확장 가능합니다.

모든 TextView 위젯( TextView , Button , Switch , CheckBox 등), 토스트 및 Spanned 콘텐츠를 허용하는 다른 모든 위치 에 마크다운을 표시하는 기능을 제공합니다 . 라이브러리는 마크다운 콘텐츠의 표시 스타일에 합리적인 기본값을 제공하지만 원하는 경우 모양을 조정할 수 있는 모든 수단도 제공합니다. commonmark-spec 에 나열된 모든 마크다운 기능이 지원됩니다( 인라인/블록 HTML 코드 , 마크다운 테이블 , 이미지구문 강조 지원 포함 ).

Markwon은 샘플 애플리케이션 과 함께 제공됩니다 . 각 코드 샘플에 대한 검색 및 소스 코드와 함께 제공되는 라이브러리 사용 모음입니다.

버전 4.2.0 부터 Markwon은 사용자 유형(예: EditText ) 으로 마크다운 입력을 강조 표시 하는 편집기 와 함께 제공됩니다 .

사용: 라이브러리 가져오기:

  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'

 Android는 데모 코드 kotlin 작성 방법을 사용합니다.

 val content = "![RUNOOB 图标](http://static.runoob.com/images/runoob-logo.png)
\n" +
              "\n" +
              "1. 第一项:\n" +
              "    - 第一项嵌套的第一个元素\n" +
              "    - 第一项嵌套的第二个元素\n" +
              "\n" +
              "这是一个链接 [菜鸟教程](https://www.runoob.com)\n"
      val markwon = Markwon.builder(this)
          .usePlugin(GlideImagesPlugin.create(this))
          .usePlugin(GlideImagesPlugin.create(Glide.with(this)))
          .usePlugin(GlideImagesPlugin.create(object : GlideImagesPlugin.GlideStore {
              override fun cancel(target: Target<*>) {
                  Glide.with(this@TestActivity).clear(target);
              }
              override fun load(drawable: AsyncDrawable): RequestBuilder<Drawable> {
                  return Glide.with(this@TestActivity).load(drawable.destination);
              }
          }))
          .build()
      markwon.setMarkdown(textView, content)

위는 마크다운 리치 텍스트를 표시하는 데모인데 html로 표시하고 싶은 경우에도 가능하지만 해당 html 종속성 라이브러리를 추가해야 합니다.

추천

출처blog.csdn.net/Jason_HD/article/details/128851635