Webview紧张/跳跃

时间:2011-08-25 15:13:43

标签: android android-3.0-honeycomb android-webview viewflipper xoom

我有一个包含webview的viewflipper。在某些情况下(看似随机),webview的底部会出现抖动/跳跃。这可以持续几秒到几秒。这是一个视频来说明我在谈论http://www.youtube.com/watch?v=I8s2P4R95r4

我现在已经创建了一个基本的测试项目,可以重现问题http://dl.dropbox.com/u/1256312/WebView%20Test.rar

问题仅发生在Honeycomb中,通常仅在横向模式下。我已经在几台2.x设备上进行了测试,一切都很好。

搜索后我发现另一个案例,其中有人在Honeycomb中有类似的问题,但他们认为原因是与标记相关。然而,我正在使用的标记是非常基本的,无论如何我已经提取它并确保它是有效的。

以下是相关代码。我从视图中删除了很多东西,以消除其他地方的问题。 View1有一个viewflipper。在活动中,我创建了许多View2类型的自定义视图(其中包含有问题的webview)并将它们添加到viewflipper。

视图1     

    <LinearLayout android:id="@+id/RelativeLayout01"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:orientation="vertical">


        <ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/question_flipper"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" 
            android:layout_marginLeft="50dp" 
            android:layout_marginRight="50dp" 
            android:layout_marginTop="50dp">

        </ViewFlipper>  

        <RelativeLayout android:id="@+id/FormulaAndResultLayout"
            android:layout_width="fill_parent"
            android:layout_height="75dp"
.....
etc.

视图2

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/QuestionLinearLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:background="#123123">
    <WebView android:id="@+id/question_web_view"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/question_figure"
        android:layout_marginTop="5dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:scrollbars="none" 
        android:layout_marginLeft="40dp" 
        android:layout_marginRight="40dp" 
        android:background="#444444"/>

</LinearLayout>

加载网页视图

qWebView = (WebView) view.findViewById(R.id.question_web_view); 
qWebView.loadDataWithBaseURL(null, String.format(questionHTMLHeader,  qObj.questionText), "text/html", "utf-8", null);

1 个答案:

答案 0 :(得分:0)

尝试动态创建和初始化您的Web视图。例如,在xml文件中为Web视图准备一个容器:

<LinearLayout android:id="@+id/container_linear_layout"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:orientation="vertical">
</LinearLayout>

然后在代码创建中,初始化您的Web视图并将Web视图插入容器:

LinearLayout container = (LinearLayout) this.findViewById(R.id.container_linear_layout);
if(container != null)
{
  WebView descriptionWebView = new WebView(context);
  descriptionWebView.loadDataWithBaseURL(null, someStringHtml, "htm", "utf-8", null);

  int margin = RSUtils.convertDpToPixels(10, context);
  LayoutParams layoutParams = new LayoutParams(LayoutParams.FILL_PARENT,
  LayoutParams.WRAP_CONTENT);
  layoutParams.setMargins(margin, 0, margin, 0);
  descriptionWebView.setLayoutParams(layoutParams);

  if(descriptionWebView != null)
     container.addView(descriptionWebView);
}