将WebView显示为AlertDialog内容

时间:2013-02-21 10:29:20

标签: android webview alertdialog

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

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

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

当我使用WebView之类的

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

我失去了默认的Android风格。

如何获取Rich上下文,例如<ul>中的AlertDialog

3 个答案:

答案 0 :(得分:1)

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

<activity .....
          android:theme="@android:style/Theme.Dialog"/>

答案 1 :(得分:0)

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

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();
        }
    });

答案 2 :(得分: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();

                    }
                });