当数据大小增加到超过 5100 个字符时,Android WebView 不显示

Posted

技术标签:

【中文标题】当数据大小增加到超过 5100 个字符时,Android WebView 不显示【英文标题】:Android WebView not displaying when data size is increased beyond 5100 characters 【发布时间】:2013-10-16 07:41:59 【问题描述】:

我有一个希望在其中呈现一些内容的 WebView。但是,如果我显示的数据长度接近 5100 个字符,则此 WebView 不会显示单个字符。

如果数据长度少于 5000 个字符,WebView 可以正常工作。

我试图在 WebView 中传递类似于“abcde .....”的简单数据

我已经在互联网上搜索过,是否对 WebView 中可以显示的数据量有任何限制,但我似乎没有找到任何东西。

这是我的 Java 代码。

myWebView = (WebView) findViewById(R.id.passage);

String data = "abcde ......."; // large number of characters > 5100.

myWebView.loadDataWithBaseURL(URL, data, "text/html", null,null);

我也尝试过myWebView.loadData(data, "text/html", null);,而不是使用loadDataWithBaseURL 函数,但这没有帮助。

这是我正在使用的 XML。

    <ScrollView
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:fadeScrollbars="false"
        android:scrollbarAlwaysDrawVerticalTrack="true"
        android:scrollbarFadeDuration="0" >

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:paddingBottom="5dp"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:paddingTop="10dp" >

            <TextView
                android:layout_
                android:layout_
                android:text="@string/passage"
                android:textColor="@color/red"
                android:textSize="18px" />

            <WebView
                android:id="@+id/passage"
                android:layout_
                android:layout_
                android:fadeScrollbars="false"
                android:layerType="software"
                android:scrollbarAlwaysDrawVerticalTrack="true"
                android:scrollbarFadeDuration="0" />
        </LinearLayout>
    </ScrollView>

请帮忙。

编辑:更准确地说,如果我渲染 5096 个字符,它会正确渲染。如果尝试渲染 5097 个或更多字符,则不会显示任何内容。如果我尝试将data 变量记录在文件中。所有数据都被记录下来,所以这不是与正确数据没有保存到字符串有关的问题。

【问题讨论】:

理想情况下它应该可以工作。当您打开具有该 web 视图的活动时,请稍等片刻。它将加载数据。 它没有加载数据。我已经将设备保留了相当长的时间。有一个精确数量的字符可以成功显示。 'N' 个字符,它会成功显示而无需花费几分之一秒。 'N+1' 个字符,它不会在屏幕上显示单个字符,无论我等待多长时间。 :( @Manu 设备名称及其运行的操作系统版本? @MorrisonChang .. 设备名称:Karbonn Smart Tab 10. Android 版本:4.1.1 【参考方案1】:

这发生在我身上,但 WebView 内容大小要小得多。通过loadDataWithBaseURL 加载 1506 个字符工作得很好,但是当加载 1507 个字符时,整个 WebView 消失了,包括背景。 (但我仍然可以从中复制文本。)

解决方法是删除 android:layerType="software" 并回退到默认的硬件 layerType。

【讨论】:

这种行为有什么特殊原因吗?

以上是关于当数据大小增加到超过 5100 个字符时,Android WebView 不显示的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我将其大小初始化为 5 并且只给出 5 个元素时,向量的大小会增加到 10?

C ++函数中矢量大小未增加的问题

当另一个文本框在报告中增加其大小时如何停止增加文本框的大小

为啥 LibSvm 准确率不超过 50%?

当前缀设置为超过 1 个字符时,Discord Bot 不会回复

log4j2 syslog 数据报大小超过 UDP 的限制