【问题标题】:Android WebView with CSS modification of hr tag带有 hr 标签的 CSS 修改的 Android WebView
【发布时间】:2011-07-20 15:24:46
【问题描述】:

我正在开发一个需要显示一些动态查询的应用程序 HTML 内容,包括 CSS。 WebView 似乎是此类工作的最佳实现。

我在测试时遇到了一个错误,并将其追踪到 以下css标签:

hr{width:100%!important}

Android WebView 似乎无法显示任何 html 包括这一行。 一些研究表明该属性已被弃用 (链接:http://www.w3schools.com/tags/att_hr_width.asp),但它有效 在所有浏览器上。

下面是一些 html,包括这一行。它会在任何 浏览器。

<html>
  <head>
    <style type=\"text/css\">
      hr{width:100%!important}
    </style>
  </head>
  <body>
    Some text
  </body>
</html>

而且,在 Android 中:

           String exampleCSS = "<html><head><style type=\"text/css\">" +
                           "hr{width:100%!important}" +
                           "</style></head><body>" +
                           "Some text" +
                           "</body></html>";
           WebView webView = (WebView) findViewById(R.id.web_html_about);
           webView.loadData(exampleCSS, "text/html", "utf-8");

结果是 web 视图中出现“网页不可用”错误。

这是由于弃用而导致的已知问题吗?它是 WebView 的错误吗? 是否有任何已知的解决此类问题的方法?

【问题讨论】:

  • 虽然 webview 不应该那样中断,但我会尝试不内联 CSS。将所有 CSS 放在一个地方(或几个地方)。

标签: android html css webview


【解决方案1】:

看起来 android webview 使用 data:// 方案传递内容,因此,您必须对内容进行 urlencode 才能按预期工作。 就我而言,css/html 是提供给我的,所以我不得不使用以下解决方法:

例子

    ((WebView) findViewById(R.id.web_body)).loadDataWithBaseURL(null, content, null, "utf-8", null);

这似乎有效,并通过了上面的这个特定问题。 感谢所有回答。 戴尔。

【讨论】:

    【解决方案2】:

    Hr 没有贬值,尽管它被赋予了语义含义。它表示内容发生了变化。

    我不确定是什么导致了您的问题,但我可以告诉您,您的书面标记是不必要的。 Hr 是块级元素,因此它已经有 100% 的宽度。

    【讨论】:

    • 感谢您的回答,克里斯。你是对的,但源 HTML 不是我自己的,所以我无法控制。
    猜你喜欢
    • 2012-04-04
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 2014-06-16
    • 2012-11-28
    • 2011-05-08
    • 2013-04-29
    相关资源
    最近更新 更多