视图太大,无法适应scrollview内Webview上的绘图缓存

时间:2014-05-05 03:51:09

标签: android webview scrollview

我正在制作一个包含webview的scrollview,它在2.3,4.1上运行得很完美,但是当我在4.4模拟器上尝试它时,它会显示

  View too large to fit into drawing cache, needs 5744640 bytes, only 3932160 available

webview只是空白。

这是布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:overScrollMode="never" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="5dp" >

            <TextView
                android:id="@+id/newsTitle"
                android:textSize="18sp"
                android:textStyle="bold"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/last_update" />

            <WebView
                android:id="@+id/newsContent"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="@string/last_update" />

            <TextView
                android:id="@+id/newsDate"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/last_update" />
        </LinearLayout>
    </ScrollView>

</LinearLayout>

我尝试使用mywebView.setDrawingCacheEnabled(false);,但它只返回相同的警告。

另外,我发现当网页超大屏幕时会出现问题,但是当我显示它时,我发现网页的布局略有不同,在2.3,4.1中,如果单词是,它可以简单地开始新行但是,在4.4中没有超出页面,因此该部分单词不在屏幕之外。

如何解决?感谢

3 个答案:

答案 0 :(得分:5)

我的建议是给webview提供布局高度,以便它不会超过你指定的高度

<LinearLayout
            android:id="@+id/webview1"
            android:layout_width="fill_parent"
            android:layout_height="150dip" >

            <WebView
                android:id="@+id/sampletxt"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>

在您的活动中,只需添加以下内容

 SampleTxt.getSettings().setLoadWithOverviewMode(true);
                SampleTxt.getSettings().setJavaScriptEnabled(true);
    SampleTxt.loadData("Your Text To show the Webview",
                        "text/html; charset=UTF-8", null);

它会正常工作。任何疑惑让我知道

答案 1 :(得分:2)

我建议您使用自己的WebView客户端。在android中我们可以使用WebViewClient或WebChromeClient。使用它你可以得到你想要的更好的结果。试试看吧。

答案 2 :(得分:0)

对于Android中的WebViews,您应该从错误的假设开始。他们不应该,但正如你所发现的,如果你让背景变成一种平面颜色,它就会解决问题。这个问题。

话虽如此,但要记住,当您为Android手机编码时,处理各种各样的处理和内存分配的移动设备仍然是个好主意,所以始终确保在真实设备上进行测试

如果您没有至少4或5种不同的物理Android设备可以测试,那么请四处寻找允许您使用其设备进行远程测试的服务。永远不要相信,因为您在模拟器中测试过某些东西,它在真实设备上的行为会相同。