Использование HTML в Android Alert Dialog

У меня есть информация, которая будет отображаться в диалоговом окне. Это похоже на Title, затем под ним текст; Название, затем под ним текст. Как и мудрый, есть 4 названия и 4 описания. Он должен выглядеть следующим образом

Title One

Описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание

Название Два

Описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание; описание

Как вы можете видеть, есть жирные тексты, подчеркнутые тексты, разрывы строк и т.д. Я хочу добавить этот текст в поле предупреждения, так что ниже это то, что я пробовал.

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: Или я использую неправильный метод? Неверное диалоговое окно?

Ответы

Ответ 2

Если вы хотите добавить ссылку и сделать ее доступной,

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

Ответ 3

Как оказалось, на самом деле вам не нужны дополнительные TextViews для этого. Просто включите HTML-код в свой ответ "setMessage()" (который заменяет вызов "setView() в вашем вопросе) и передает ему строку в формате html. Обязательно используйте <b>, <u> и <i> в своем форматировании, хотя, поскольку они являются единственными тегами, которые он поддерживает. Если вы используете ресурс String для текста в своем предупреждении, вызовите getResources().getText(R.id.yourHtmlString), а не getResources().getString(R.id.yourHtmlString), хотя или теги будут полностью удалены из строки.

Ответ 4

Попробуйте это, Цвет шрифта,

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

подчеркивание шрифта,

   String source = <u>Message</u>

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

Ответ 5

Если вам нужно добавить более сложный HTML, с CSS и META, вы можете добавить WebView в диалог, например:

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

Таким образом, вы можете отображать полностью отформатированные HTML-страницы в своем диалоговом окне.