WebView中不显示长文本

时间:2014-04-30 12:25:21

标签: android android-webview

在Android应用程序中,我使用WebView显示HTML文本。有时这段文字很长。在这种情况下,文本未显示。当我删除一个句子时,文本显示在我的WebView中。在WebView中是否存在最大字符限制?

string myText = "<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <style type="text/css">
        html, body {
            background: transparent; foreground: black;
        }
        .linkcolor {
            color: #80b936;
        }
    </style>
</head>
<body>My Content<br/>&nbsp;</body></html>"
  

WebView.LoadData(myText,&#34; text / html; charset = utf-8&#34;,null);

5 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并在this问题上找到了答案。 将xml上的android:layerType"software"设置为"none"即可解决问题。

您也可以以编程方式执行此操作:

myWebview.setLayerType(WebView.LAYER_TYPE_NONE, null);

您还可以查看setLayerType(int layerType, Paint paint) doc

答案 1 :(得分:2)

我遇到了同样的问题。删除句子会导致WebView正确显示,将其添加回会导致WebView为空。

就我而言,我有一个ScrollView拥有一个拥有WebView的LinearLayout。我删除了ScrollView,WebView开始工作得很好。 WebView本身提供滚动功能,因此您不需要ScrollView。

我希望那是你的问题。

答案 2 :(得分:0)

WebView中文本的大小没有人为限制(除了设备上的RAM数量外)。

如果你正在运行Android 4.4(KitKat),你可能会达到一个内部缓冲区大小限制(大约20MB IIRC),但添加/删除一个句子的变化似乎有点不太可能会让你高于/低于限制。

答案 3 :(得分:0)

我会注意你使用双引号(“),因为它可能会导致你的字符串出现问题。我不确定你的例子是否真的有用,所以你可能需要展示一些有用的样本和什么样的内容吨。

这样的东西可能会起作用(我将一些双引号更改为单引号):

String myText = "<html>
<head>
    <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
    <style type='text/css'>
        html, body {
            background: transparent; foreground: black;
        }
        .linkcolor {
            color: #80b936;
        }
    </style>
</head>
<body>My Content<br/>&nbsp;</body></html>";

答案 4 :(得分:0)

您的HTML是否包含<img><script>个标签? 如果是这样,请记住,根据HTML DOM解析器,如果您的HTML以外部资源启动,它将尝试下载该外部资源,然后再继续呈现下面的文本。 因此,如果由于某种原因资源下载速度很慢,您将看到一个空白页面。 可能的解决方案:

  1. 将JS包含为异步或最后
  2. <img>的CSS保留为display:none在内联CSS或在HTML之前声明的CSS <style>标记
  3. 有一个内联的JS脚本,它将图像的CSS属性更改回display:block
  4. 那就是说,既然Android WebView是bug-ridden并且是一个复杂的野兽,我正在考虑使用TextViews和ImageViews完全使用原生渲染我的项目。

    希望这有帮助! :)