4

当使用 WebView 显示简单的格式化文本(无远程内容加载)时,一些设备(如 Nexus 4 或 Galaxy Nexus)在 onPageFinished() 和实际显示文本之间存在非常显着的延迟。如果在动态垂直布局中使用 WebView 并将其高度设置为 wrap_content,则下面的所有元素都会明显向下,从而造成非常糟糕的用户体验。

例如:

public class WebViewActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        WebView webview = (WebView) findViewById(R.id.webview);
        webview.loadData("<html><head></head><body>WebView rendering is slow on some devices like the Nexus 4!</body></html>", "text/html", "utf-8");
    }
}

随着R.layout.activity_web_view存在

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

    <WebView android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/webview"/>

    <TextView android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:layout_margin="5dp"
        android:text="Elements below the WebView are jumping down when rendering is completed."/>
</LinearLayout>

可以在https://github.com/rodja/webview-slow-rendering-demo找到带有此代码的演示项目

我怎样才能最好地解决这个问题?我在 StackOverflow 上找到的加速技巧似乎没有帮助。在渲染完成之前隐藏整个 LayoutGroup是唯一的选择吗?

4

0 回答 0