Android TextView carga datos en formato MarkDown y admite formato de texto enriquecido

Prefacio: En el desarrollo de proyectos, a menudo es necesario mostrar algún texto en diferentes estilos, como: nuevas líneas en negrita, agregar ajustes de enlaces de imágenes, etc. En este momento, la mayoría de ellos usan Spannable que viene con Android. las fuentes de estilo especial, Spannable o html todavía son posibles. Sin embargo, si el cliente necesita soportar estilos complejos de redacción, Spannable no es muy flexible, en este caso, muchos amigos pensarán en usar HTML de texto enriquecido, es decir, usar WebView, pero WebView consume más rendimiento y no es adecuado para su uso. en la tabla de mensajes. , y luego todos pensarán en usar MarkDown, pero el soporte nativo de Android para MarkDown no es muy bueno, por lo que generalmente todos importan bibliotecas para hacerlo.

Las mejores bibliotecas empaquetadas en línea son: RichText y Markwon

  1. Texto enriquecido: https://github.com/zzhoujay/RichText

Analizador de texto enriquecido en la plataforma Android
  • operación de transmisión

  • poco invasivo

  • Menos dependencias, solo disklrucache y soporte v4

  • Admite texto en formato Html y Markdown

  • Compatibilidad con clics en imágenes y eventos de pulsación larga

  • Evento de clic en enlace y evento de pulsación larga

  • Admite la configuración de imágenes durante la carga y los errores de carga

  • Soporte de devolución de llamada de clic para hipervínculos personalizados

  • Soporte para corregir el ancho y la altura de la imagen.

  • Admite imágenes GIF

  • Admite codificación Base64, imágenes locales e imágenes del catálogo de activos

  • Cargador de imágenes personalizado autosuficiente, cargador de imágenes

  • Admite memoria y doble almacenamiento en búfer de disco

  • Se ha agregado soporte para analizadores Html personalizados

Efecto:

Uso: método al que se hace referencia en gradle:

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

Código utilizado:

Debido a que es texto enriquecido, habrá mucho contenido, por lo que se debe agregar una barra de desplazamiento (no la mostraré aquí)

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

Código Java:

 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. Uso: Markwon : https://github.com/noties/Markwon

Una biblioteca relativamente nueva, que ha sido actualizada:

Markwon es una biblioteca de rebajas para Android. Analiza el markdown siguiendo commonmark-spec con la ayuda de la increíble biblioteca commonmark-java y presenta el resultado como Spannables nativos de Android . Ningún HTML está involucrado como un paso intermedio. No se requiere WebView . Es extremadamente rápido, rico en funciones y extensible.

Brinda la capacidad de mostrar el descuento en todos los widgets de TextView ( TextView , Button , Switch , CheckBox , etc.), Brindis y todos los demás lugares que aceptan contenido distribuido . La biblioteca proporciona valores predeterminados razonables para mostrar el estilo de un contenido de descuento, pero también brinda todos los medios para modificar la apariencia si lo desea. Se admiten todas las funciones de rebajas enumeradas en commonmark-spec (incluida la compatibilidad con código HTML en línea/bloque , tablas de rebajas , imágenes y resaltado de sintaxis ).

Markwon viene con una aplicación de muestra . Es una colección de usos de la biblioteca que viene con búsqueda y código fuente para cada muestra de código.

Desde la versión 4.2.0 , Markwon viene con un editor para resaltar la entrada de descuento como tipos de usuario (por ejemplo, en EditText ).

Uso: importar biblioteca:

  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 utiliza el método de escritura de código de demostración 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)

Lo anterior es una demostración de cómo mostrar texto enriquecido de Markdown. Si desea mostrar html, también es posible, pero debe agregar la biblioteca de dependencia html correspondiente.

Supongo que te gusta

Origin blog.csdn.net/Jason_HD/article/details/128851635
Recomendado
Clasificación