WebView scrollTo无效

pen*_*uru 9 android android-webview

我正在尝试使用webview的scrollTo方法.这是我的webview布局文件.

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout  
  xmlns:android="http://schemas.android.com/apk/res/android"  
  android:orientation="vertical"  
  android:layout_width="fill_parent"  
  android:layout_height="fill_parent"   
>  
<WebView  
   android:id="@+id/webMap"  
   android:layout_width="fill_parent"  
   android:layout_height="fill_parent"  
 />  
</LinearLayout> 
Run Code Online (Sandbox Code Playgroud)

我要做的是显示一个html文件(只有一个地图图像)并滚动到图像上的某个区域:

mapWebView.loadUrl("file:///android_asset/maps/map.html");
mapWebView.scrollTo(300, 300);
Run Code Online (Sandbox Code Playgroud)

但是当加载webview时,它总是显示图像的(0,0).

这有什么问题scrollTo()

Dea*_*ild 16

我怀疑这mapWebView.loadUrl("file:///android_asset/maps/map.html");是异步的,所以 mapWebView.scrollTo(300, 300);在webview完成加载之前执行.页面加载后,它将丢失您应用的滚动设置,并将重置为顶部.

您需要监听页面加载,然后滚动它:

mapWebView.setWebViewClient(new WebViewClient(){

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            mapWebView.scrollTo(300, 300);
        }

    }
    );
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

编辑:事实证明这是不可靠的,改为使用它:

mapWebView.setPictureListener(new PictureListener() {

        @Override
        public void onNewPicture(WebView view, Picture picture) {
             mapWebView.scrollTo(300, 300);

        }
    });
Run Code Online (Sandbox Code Playgroud)

  • 谢谢Dean,setPictureListener效果很好! (2认同)