android - WebView scrollTo 不工作

标签 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> 

我想做的是显示一个 html 文件(它只有一个 map 图像)并滚动到图像上的特定区域:

mapWebView.loadUrl("file:///android_asset/maps/map.html");
mapWebView.scrollTo(300, 300);

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

这里的scrollTo()有什么问题?

最佳答案

我怀疑 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);
        }

    }
    );

希望对你有帮助

编辑:原来这是不可靠的,改用这个:

mapWebView.setPictureListener(new PictureListener() {

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

        }
    });

关于android - WebView scrollTo 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9392031/

相关文章:

java - Recyclerview 调用 notifyItemChanged 导致空白项

android - 需要将 HTML 页面(使用 CSS)显示为翻页的书

android - Google Play 警告 : Your app contains a Cross-App Scripting Vulnerability

Android webview 下拉菜单不适用于 Android 4.x 设备

android - 在 webview 中启用水平滚动

android - 使用 okhttp 拦截器检查网络连通性

java - ANDROID:错误 W/DynamiteModule:找不到 com.google.android.gms.googlecertificates 的本地模块描述符类

Android 是否可以从服务中获取 Activity 偏好值?

android - 如何在 Android Studio 中查看我的应用程序的 Dalvik 字节码?

android - 在包含 HTML 数据的列表中使用 WebView 或 TextView 中的哪一个?