简单来说:我想在WebView中显示的HTML文件中添加当前位置(可能几个位置),以便以后还原它。任何小提示都会有所帮助。:)

有帮助吗?

解决方案

如果以“当前位置”你在给定的页面意味着一个点的地方,我不相信这是可能的......至少不是从纯Java。暴露到Java的整个的WebKit API缺乏的东西,随着网页内容涉及了。

如果你有在页面内容的控制,并有一个办法可以知道通过在页面的JavaScript这些位置,您可以:

步骤#1:使用WebView#addJavascriptInterface()与某种recordPosition()方法的添加对象,保存信息,无论是适当

步骤#2:创建一个Javascript函数调用被注入的对象上recordPosition()

和然后:

步骤#3A:触发器,从Javascript本身Javascript函数(例如,基于一个点击),或者

步骤#3B:在你的loadUrl("javascript:...");,其中WebView由Javascript代码替换以触发从步骤#2中的Javascript函数调用...

恢复这些职位将不得不工作几乎相同的方式:的JavaScript做实际的恢复,可能是由Java代码触发

请注意,我不知道,如果你想要什么(获取/设置当前位置),可从Javascript,因为我没有太多的在浏览器中编码的。

其他提示

我采取的方法如下:

在里面 onSaveInstanceState() 方法,计算用户向下滚动页面的距离。

    int contentHeight = webView.getContentHeight();
    int scrollY = webView.getScrollY();

    float scrollPercent = ((float) scrollY / ((float) contentHeight));

把它藏在包里。恢复页面时 onCreate() 方法,等待页面完成加载(在 WebClient.onPageFinished()),滚动到记录位置:

    int contentHeight = webView.getContentHeight(); 
    int y = (int) ((float) contentHeight * scrollPercent);
    webView.scrollTo(0, y);
  • 用一个 float 并在横向和纵向之间翻转的情况下计算比率。
  • 可以工作 足够好 但不是 完美 与自动调整大小的图像混合时。
  • 还可以考虑规模。我倾向于将比例隐藏在偏好中 onPause() 方法,然后 webView.setInitialScale(scale) 在开始加载页面之前。
  • 我发现将网络视图设置为不可见时 scrollPercent > 0 看起来好多了。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top