当数据大小增加到超过 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?