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

如果数据长度少于5000个字符,则WebView可以很好地工作。

我试图在WebView中传递类似于“ abcde .....”的简单数据。
如果字符数大于5100的字符将不会显示单个字符。

我已经在Internet上进行了搜索,以了解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_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:fadeScrollbars="false"
        android:scrollbarAlwaysDrawVerticalTrack="true"
        android:scrollbarFadeDuration="0" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingBottom="5dp"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:paddingTop="10dp" >

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

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


请帮忙。

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

最佳答案

这对我来说是发生了,但是WebView内容的大小要低得多。通过loadDataWithBaseURL加载1506个字符效果很好,但是当加载1507个字符时,整个WebView都消失了,包括背景。 (但是我仍然可以从中复制文本。)

解决方法是删除android:layerType="software"并恢复为默认的硬件layerType。

09-30 15:37
查看更多