2

我正在尝试创建一个AlertDialog内容丰富的内容。当我使用Html.fromHtml()设置消息文本时,例如:

AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle("title");
adb.setMessage(Html.fromHtml(text));

它只允许我使用基本的 HTML 元素,例如<b>(粗体)和<i>(斜体)。

当我使用WebViewlike

WebView webView = new WebView(this);
myWebView.loadData(webContent, "text/html", "utf-8");
AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setView(webView);

我失去了默认的 Android 风格。

我该怎么做才能获得丰富的上下文,例如<ul>AlertDialog? 中。

4

3 回答 3

1

试试这个,使用自定义适配器

final Dialog custon_dialog = new Dialog(Login.this);
custon_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
custon_dialog.setContentView(R.layout.webview);
custon_dialog.setCancelable(true);
// custon_dialog.setTitle(null);

WebView mwebview = (WebView) custon_dialog.findViewById(R.id.webview);
    mwebview.setBackgroundColor(0x00000000);
    mwebview.loadData(webContent, "text/html", "utf-8");
custon_dialog.show();
        }
    });
于 2013-02-21T10:33:42.193 回答
1

您可以在活动中添加 webview,并将活动主题设置为清单文件中的对话框:

<activity .....
          android:theme="@android:style/Theme.Dialog"/>
于 2013-02-21T12:42:05.623 回答
0

Html.fromHtml(text) 使用tagsoup

确实支持简单的标签供您参考html.fromhtml

尽管使用

String text="some html code";

使用您的 css 等创建一个 html 文件,并将所有文件放在应用程序的 assets 文件夹中。

现在,代替这个

adb.setMessage(Html.fromHtml(text));  

就像您希望在alerdialog中显示的丰富内容一样。

这应该对您有所帮助,请记住:您还可以使用自己的自定义布局来扩展对话框

AlertDialog.Builder alert = new AlertDialog.Builder(yourclass.this);

   alert.setTitle("title");
   WebView wv = new WebView(yourclass.this);

   wv.loadUrl("file:///assets/yourHtmlFileName.html");

                        wv.setWebViewClient(new WebViewClient()
                        {
                            public boolean shouldOverrideUrlLoading(WebView view, String url)
                            {
                                view.loadUrl(url);

                                return true;
                            }
                        });

                        alert.setView(wv);

                        alert.show();

                    }
                });
于 2013-02-21T10:47:51.277 回答