web-dev-qa-db-ja.com

Android警告ダイアログでのHTMLの使用

ダイアログボックスに表示する情報がいくつかあります。タイトルのようになり、その下にテキストがあります。タイトル、その下のテキスト。同様に、4つのタイトルと4つの説明が表示されます。このようになるはずです

タイトル1

説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明

タイトル2

説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明

ご覧のとおり、太字のテキスト、下線付きのテキスト、改行などがあります。この種類のテキストをアラートボックスに追加したいので、以下を試してみました。

TextView msg = new TextView(this);
msg.setText("<html><u>Message</u></html>")

AlertDialog.Builder ab = new AlertDialog.Builder(this);
ab.setTitle("Title");
ab.setView(msg);
ab.setCancelable(false);

//rest of the code

しかし、このトリックは機能しませんでした。何が起こったのか、すべてのHTMLタグがそのまま表示された!そして、テキストは明確ではありません! AlertBoxのデフォルト色である黒の背景と混ざっているようです。この問題を解決するにはどうすればよいですか?助けてください!

PS:または、間違った方法を使用していますか?ダイアログボックスが間違っていますか?

22
Lemon Juice

TextViewでHTMLタグを使用するには、 Html.fromHtml() を使用する必要があります。

msg.setText(Html.fromHtml("<u>Message</u>"))

また、すべての TextViewでサポートされるHTMLタグ も表示されます。

50

結局のところ、これを行うために追加のTextViewは実際には必要ありません。アラートの "setMessage()"呼び出し(質問の "setView()"呼び出しを置き換える)にHTMLを含めて、html形式の文字列を渡します。サポートされている唯一のタグであるため、フォーマットでは_<b>_、_<u>_、および_<i>_のみを使用してください。アラートのテキストに文字列リソースを使用している場合は、getResources().getText(R.id.yourHtmlString)ではなくgetResources().getString(R.id.yourHtmlString)を呼び出します。そうしないと、タグが文字列から完全に削除されます。

12
alan

リンクを追加してクリック可能にしたい場合は、

msg.setMovementMethod(LinkMovementMethod.getInstance());
msg.setClickable(true);
8
YulCheney

より複雑なHTMLを追加する必要がある場合は、CSSおよびMETAを使用して、次のようにダイアログにWebViewを追加できます。

String webViewString = yourMeta + yourCss + yourHtml;
yourCustomWebView.loadData(webViewString, "text/html; charset=UTF-8",
                    null);
yourAlertDialog.setView(yourCustomWebView);

このようにして、完全にフォーマットされたHTMLページをダイアログに表示できます。

3
keybee

これを試してください、フォントの色、

   String source = "<b><font color=#ff0000> Loading. Please wait..."
                + "</font></b>";

フォントの下線、

   String source = <u>Message</u>

 msg.setText(Html.fromHtml(source));
2
MuraliGanesan

必要な場合に備えて。古いバージョンとの互換性のためにHtmlCompat.fromHtml((htmlString, 0)を使用する方が良いでしょう。

1
Bellan