29

ulとliを含むStringがあります。そして、私はそれらをテキストビューでHTML形式で表示しようとしています。
textView.setText(Html.fromHtml(myHtmlText));
ただし、textviewはプレーンテキストを表示します。ulタグとliタグをtextviewでフォーマットするにはどうすればよいですか?

4

7 に答える 7

52

Html.TagHandler を使用できます。

あなたの場合、次のようになります。

public class UlTagHandler implements Html.TagHandler{
    @Override
    public void handleTag(boolean opening, String tag, Editable output,
                          XMLReader xmlReader) {
            if(tag.equals("ul") && !opening) output.append("\n");
            if(tag.equals("li") && opening) output.append("\n\t•");
    }
}

textView.setText(Html.fromHtml(myHtmlText, null, new UlTagHandler()));
于 2016-04-29T16:05:07.397 に答える
13

文字列リソースでサポートされるタグ

静的文字列リソースのタグは、隠しクラスである android.content.res.StringBlock によって解析されます。クラスを調べて、サポートされているタグを特定しました。

<a> (supports attributes "href")
<annotation>
<b>
<big>
<font> (supports attributes "height", "size", "fgcolor" and "bicolor", as integers)
<i>
<li>
<marquee>
<small>
<strike>
<sub>
<sup>
<tt>
<u>

Html.fromHtml() でサポートされているタグ

何らかの理由で、Html.fromHtml() は、静的テキストがサポートするものとは異なる一連のタグを処理します。タグのリストを次に示します (Html.java のソース コードから収集)。

<a> (supports attribute "href")
<b>
<big>
<blockquote>
<br>
<cite>
<dfn>
<div>
<em>
<font> (supports attributes "color" and "face")
<i>
<img> (supports attribute "src". Note: you have to include an ImageGetter to handle retrieving a Drawable for this tag)
<p>
<small>
<strong>
<sub>
<sup>
<tt>
<u>

詳細については、このリンクを参照してください

于 2012-06-26T18:57:32.530 に答える
6

TextViewでサポートされているHTMLタグを参照してください。ulタグとliタグは どちらもandroid.text.Htmlクラスではサポートされていません。

解決策:これらのタグは、 WebViewまたはTagHandlerを使用して表示できます

詳細については、この投稿を参照してください。

HtmlリストタグがAndroidテキストビューで機能しません。私に何ができる?

于 2012-06-26T18:48:05.103 に答える
4

以下の回答によると、ここですべての HTML タグを使用することはできません。

https://stackoverflow.com/a/3150456/2275962

しかし、確かに、Android TextView で箇条書きを表示する方法があります。<li>タグを&#149;(箇条書きの HTML コード) に置き換えることができます。

他のリスト アイコンを試してみたい場合は、このリンクの表から優先するものを使用してください。

http://www.ascii-code.com/

于 2014-12-27T12:07:54.700 に答える
3

API レベル M (23) 以下で物事を機能させるための非常に簡単な方法 HTML 文字列から、以下を使用できます。

private fun String.formattedHtml(): String {
    // Work around for API Versions lower than N, Html.fromHtml does not render list items correctly
    return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
        this.replace("<ul>", "")
            .replace("</ul>", "")
            .replace("<li>", "<p>• ")
            .replace("</li>", "</p>")
    } else {
        this
    }
}

次に、次を使用できます。

Html.fromHtml("<ul><li> test </li></ul>".formattedHtml())

https://stackoverflow.com/a/40524835に記載されているように、サポートとタグTagHandlerの API N 以降は必要ありません。android.text.Htmlliul

于 2019-02-14T21:47:56.710 に答える