ダイアログボックスに表示する情報がいくつかあります。タイトルのようになり、その下にテキストがあります。タイトル、その下のテキスト。同様に、4つのタイトルと4つの説明が表示されます。このようになるはずです
説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明
説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明;説明
ご覧のとおり、太字のテキスト、下線付きのテキスト、改行などがあります。この種類のテキストをアラートボックスに追加したいので、以下を試してみました。
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:または、間違った方法を使用していますか?ダイアログボックスが間違っていますか?
TextView
でHTMLタグを使用するには、 Html.fromHtml()
を使用する必要があります。
msg.setText(Html.fromHtml("<u>Message</u>"))
また、すべての TextView
でサポートされるHTMLタグ も表示されます。
結局のところ、これを行うために追加のTextViewは実際には必要ありません。アラートの "setMessage()"呼び出し(質問の "setView()"呼び出しを置き換える)にHTMLを含めて、html形式の文字列を渡します。サポートされている唯一のタグであるため、フォーマットでは_<b>
_、_<u>
_、および_<i>
_のみを使用してください。アラートのテキストに文字列リソースを使用している場合は、getResources().getText(R.id.yourHtmlString)
ではなくgetResources().getString(R.id.yourHtmlString)
を呼び出します。そうしないと、タグが文字列から完全に削除されます。
リンクを追加してクリック可能にしたい場合は、
msg.setMovementMethod(LinkMovementMethod.getInstance());
msg.setClickable(true);
より複雑なHTML
を追加する必要がある場合は、CSS
およびMETA
を使用して、次のようにダイアログにWebView
を追加できます。
String webViewString = yourMeta + yourCss + yourHtml;
yourCustomWebView.loadData(webViewString, "text/html; charset=UTF-8",
null);
yourAlertDialog.setView(yourCustomWebView);
このようにして、完全にフォーマットされたHTMLページをダイアログに表示できます。
これを試してください、フォントの色、
String source = "<b><font color=#ff0000> Loading. Please wait..."
+ "</font></b>";
フォントの下線、
String source = <u>Message</u>
msg.setText(Html.fromHtml(source));
必要な場合に備えて。古いバージョンとの互換性のためにHtmlCompat.fromHtml((htmlString, 0)
を使用する方が良いでしょう。