はじめに: プロジェクト開発では、改行を太字にしたり、画像リンク調整を追加したりするなど、さまざまなスタイルでテキストを表示する必要がよくあります。現時点では、そのほとんどは Android に付属の Spannable を使用します。特殊なスタイルのフォント、Spanable または HTML も引き続き使用できます。ただし、クライアントが複雑なスタイルのコピーライティングをサポートする必要がある場合、Spannable はあまり柔軟ではありません。この場合、多くの友人はリッチ テキスト HTML、つまり WebView の使用を考えるでしょうが、WebView はパフォーマンスを消費するため、使用には適していません。メッセージ テーブルに . が含まれている場合、誰もが MarkDown を使用することを考えるでしょうが、Android の MarkDown に対するネイティブ サポートはあまり優れていないため、一般的にはライブラリをインポートしてそれを実行します。
オンラインでパッケージ化された優れたライブラリは、RichText と Markwon です。
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"/>
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. 使用: Markwon : https://github.com/noties/Markwon
更新された比較的新しいライブラリ:
Markwonは Android 用のマークダウン ライブラリです。素晴らしいcommonmark-javaライブラリの助けを借りてcommonmark-specに従ってマークダウンを解析し、結果をAndroid ネイティブのSpannables としてレンダリングします。中間ステップとしてHTML は含まれません。WebView は必要ありません。非常に高速で、機能が豊富で、拡張性があります。
これにより、すべての TextView ウィジェット ( TextView、Button、Switch、CheckBoxなど)、トースト、およびスパンド コンテンツを受け入れるその他すべての場所でマークダウンを表示できるようになります。ライブラリは、マークダウン コンテンツの表示スタイルに適切なデフォルトを提供しますが、必要に応じて外観を調整するためのあらゆる手段も提供します。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依存ライブラリを追加する必要があります。