【问题标题】:How to load html string in a webview?如何在 webview 中加载 html 字符串?
【发布时间】:2012-11-28 18:46:14
【问题描述】:

我有一个包含以下内容的 html 字符串:

    <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <meta name="spanish press" content="spain, spanish newspaper, news,economy,politics,sports">  
      <title></title>
      </head>
      <body id="body">  
<!-- The following code will render a clickable image ad in the page -->
        <script src="http://www.myscript.com/a"></script>
      </body>
    </html>

我需要将该网站显示到 android 中的 webview 中。

我尝试了所有这些:

webView.loadDataWithBaseURL(null, txt, "text/html", "UTF-8", null);
webView.loadDataWithBaseURL("x-data://base", txt, "text/html", "UTF-8", null);      
webView.loadDataWithBaseURL("notreal/", txt, "text/htm", "utf-8",null);

我也尝试删除 DOCTYPE 标签:

txt=txt.replace("&lt;!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"&gt;", "");

没有一个人有工作。我刚刚实现了将字符串显示到 webview(html 代码)中,而不是必须使用该 html 代码创建的网站。

怎么了?

【问题讨论】:

  • 你试过loadData 吗?
  • 你可以把这个html字符串放到文件res/values/strings.xml中并创建项目例如&lt;string name="website"&gt;your html here&lt;/string&gt;然后通过Html.fromHtml(getString(R.string.website))加载它,如果你有时间请检查一下,因为我想知道它是否也有效;)
  • (无论如何,你需要什么基本网址?)
  • @Lumma : Html.fromHtml 不适用于 webView。它返回一个用于 TextViews 的 Spanned。

标签: android webview android-webview


【解决方案1】:

在 WebView 中加载数据。调用WebView的loadData()方法

wv.loadData(yourData, "text/html", "UTF-8");

你可以看看这个例子

http://developer.android.com/reference/android/webkit/WebView.html

[编辑 1]

您应该在 -- " 之前添加 -- \ -- -- 例如 --> name=\"spanish press\"

下面的字符串对我有用

String webData =  "<!DOCTYPE html><head> <meta http-equiv=\"Content-Type\" " +
"content=\"text/html; charset=utf-8\"> <html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=windows-1250\">"+
 "<meta name=\"spanish press\" content=\"spain, spanish newspaper, news,economy,politics,sports\"><title></title></head><body id=\"body\">"+
"<script src=\"http://www.myscript.com/a\"></script>şlkasşldkasşdksaşdkaşskdşk</body></html>";

【讨论】:

  • 不起作用,只是显示一个没有内容的空白视图。
  • 对于正确的 UTF-8,您应该使用 webView.loadData(data, "text/html; charset=UTF-8;", null); 按照 stackoverflow.com/a/9312031
  • 我们应该改用loadDataWithBaseURL,因为loadData不处理下一行(\n)stackoverflow.com/q/5027084/5381331
  • data = "" 不起作用,获取空白视图
【解决方案2】:

你也可以试试这个

   final WebView webView = new WebView(this);
            webView.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null);

【讨论】:

    【解决方案3】:

    从资产 html 文件中读取

    ViewGroup webGroup;
      String content = readContent("content/ganji.html");
    
            final WebView webView = new WebView(this);
            webView.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null);
    
            webGroup.addView(webView);
    

    【讨论】:

      【解决方案4】:

      我有同样的要求,我已经按照以下方式完成了。你也可以试试这个..

      使用 loadData 方法

      web.loadData("&lt;p style='text-align:center'&gt;&lt;img class='aligncenter size-full wp-image-1607' title='' src="+movImage+" alt='' width='240px' height='180px' /&gt;&lt;/p&gt;&lt;p&gt;&lt;center&gt;&lt;U&gt;&lt;H2&gt;"+movName+"("+movYear+")&lt;/H2&gt;&lt;/U&gt;&lt;/center&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Director : &lt;/strong&gt;"+movDirector+"&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Producer : &lt;/strong&gt;"+movProducer+"&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Character : &lt;/strong&gt;"+movActedAs+"&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Summary : &lt;/strong&gt;"+movAnecdotes+"&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Synopsis : &lt;/strong&gt;"+movSynopsis+"&lt;/p&gt;\n","text/html", "UTF-8");

      movDirector movProducer 之类的都是我的字符串变量。

      简而言之,我为我的网址保留了自定义样式。

      【讨论】:

        猜你喜欢
        • 2019-08-13
        • 2020-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        • 2014-07-29
        相关资源
        最近更新 更多