【问题标题】:Using HTML in Android Alert Dialog在 Android 警报对话框中使用 HTML
【发布时间】:2013-01-17 03:42:47
【问题描述】:

我有一些信息要显示在对话框中。它像标题,然后在它下面的文本;标题,然后在它下面的文字。同样,要显示 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:还是我用错了方法?错误的对话框?

【问题讨论】:

  • 为此您无需创建新视图msg。您可以简单地使用ab.setText(Html.fromHtml( ... ))。另请注意,ab 方法可以链接。

标签: java android eclipse android-alertdialog


【解决方案1】:

如果你需要的话。 最好使用HtmlCompat.fromHtml((htmlString, 0) 与旧版本兼容。

【讨论】:

    【解决方案2】:

    您将需要使用Html.fromHtml()TextView 中的HTML 标记用作:

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

    你也看到了所有HTML tags supported by TextView

    【讨论】:

    • 非常感谢您的帮助!
    • 另外,请记住,如果您从strings.xml 提取消息(从长远来看是一个好主意),您必须escape the HTML using CDATA 否则您将看不到任何格式。
    • 像奇迹一样工作!谢谢。@ρяσѕρєя K,请问你能帮我解决这个问题吗stackoverflow.com/questions/25598696/…
    • 如果您在使用 Html.fromHtml 时收到弃用警告,请查看 this SO answer
    【解决方案3】:

    事实证明,您实际上不需要任何额外的 TextView 来执行此操作。只需将 HTML 包含在警报的“setMessage()”调用中(替换问题中的“setView()”调用)并将其传递给 html 格式的字符串。请确保在您的格式中仅使用&lt;b&gt;&lt;u&gt;&lt;i&gt;,因为它们是它支持的唯一标签。如果您对警报中的文本使用字符串资源,请调用 getResources().getText(R.id.yourHtmlString) 而不是 getResources().getString(R.id.yourHtmlString),否则标签将从字符串中完全剥离。

    【讨论】:

    • 天哪。我正在开发 Android 应用程序 6 年了,但我不知道 Resources#getText。我一生都在使用 Resources#getString。这很有帮助。谢谢! +1
    【解决方案4】:

    如果您需要添加更复杂的HTML,包括CSSMETA,您可以在对话框中添加WebView,如下所示:

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

    这样,您可以在对话框中显示完全格式化的 HTML 页面。

    【讨论】:

      【解决方案5】:

      如果要添加链接并使其可点击,

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

      【讨论】:

        【解决方案6】:

        试试这个, 字体颜色,

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

        字体下划线,

           String source = <u>Message</u>
        
         msg.setText(Html.fromHtml(source));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-06-26
          • 1970-01-01
          • 2011-12-25
          • 1970-01-01
          • 2019-09-05
          • 2012-10-20
          • 1970-01-01
          相关资源
          最近更新 更多