【问题标题】:WebView.scrollTo function not showing upWebView.scrollTo 功能未显示
【发布时间】:2021-03-12 11:41:19
【问题描述】:

我正在尝试使用 webview 打开一个 pdf 文档并滚动到某个页面。但是,日志显示应用认为它滚动到了一个页面,但仍然停留在文档的第 1 页。

我目前的代码如下:

String pdf = https://docs.google.com/file/d/0BzfmteGs4MHZMTAzOGQ0ZjUtM2E5OC00YmNhLWIyMDEtZDAxYjc5OWIwYjkw/edit?hl=en#
web = (WebView) findViewById(R.id.web);
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl(pdf);
web.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        web.scrollTo(0,100);
        Log.d("CURRENTPAGE", String.valueOf(web.getScrollY()));
        Log.d("TOTALPAGES", String.valueOf(view.getContentHeight()));
    }
});

日志这样说

CURRENTPAGE: 100
TOTALPAGES: 796

但该页面仍保留在 pdf 的第 1 页上。谁能帮我找出我做错了什么?

【问题讨论】:

    标签: java android android-studio webview scrollto


    【解决方案1】:

    WebView 本身不处理 PDF。如果您在内部打开一些URL(没有下载作为文件提示),那么这可能是一些网络应用程序,它在内部处理 PDF 格式,将其内容“翻译”为WebView-understandable(一些网络语言,可能是 HTML)

    因此,如果此 Web 应用程序将其内容作为高度为 796 像素的单个网页引入(您将其命名为 TOTALPAGES,那不是真的)并在内部处理 pdf 页面切换,那么您无法以这种方式做很多事情

    进一步:您加载的网页的高度为 796 像素,并且可能将整个内容都放入您的屏幕,因此 scrollTo 方法不会滚动任何内容。如果您的网页高度得到了例如3456 px 并且你的屏幕是全高清的(所以网页不适合)然后你可以使用scrollTo

    【讨论】:

    • 执行此操作的实际方法是什么?我分享的 google drive pdf 有 63 页。如何滚动到 pdf 中的页面?
    • 我个人认为这对于第三方网络应用程序阅读/显示 PDF 是不可能的。也许有一个用 Javascript 编写的 API,但我怀疑...WebView 的可能性非常有限,它的目的不是仅使用 Web 组件来制作整个高级应用程序 - 阅读/打印 PDF 不是一个微不足道的功能,它实际上需要整个引擎,它无法理解 PDF 数据格式
    • 好的。谢谢你。那我再找个办法。
    猜你喜欢
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    相关资源
    最近更新 更多