我有一个包含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);
答案 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);
}