在方向更改期间,我在保留 Android 的 WebView 控件中加载的内容的当前滚动位置时遇到问题。该问题目前仅存在于 Android 2.1 和 Android 2.1 Update 1
我使用的代码基于默认的浏览器应用程序,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mWebView = new WebView(this);
setContentView(mWebView);
mWebView.setWebViewClient(mWebViewClient);
if (savedInstanceState != null)
{
final WebBackForwardList list = mWebView.restoreState(savedInstanceState);
if (list == null)
return;
if (savedInstanceState.containsKey("currentPicture"))
{
final File f = new File(savedInstanceState.getString("currentPicture"));
mWebView.restorePicture(savedInstanceState, f);
f.delete();
}
}else
mWebView.loadUrl("http://slashdot.org/");
}
@Override
protected void onSaveInstanceState(Bundle outState)
{
final WebBackForwardList list = mWebView.saveState(outState);
File mThumbnailDir = getDir("thumbnails", 0);
if (list != null)
{
final File f = new File(mThumbnailDir, mWebView.hashCode() + "_pic.save");
if (mWebView.savePicture(outState, f))
outState.putString("currentPicture", f.getPath());
}
}
此代码适用于 Android 1.5、1.6 和 2.0.1。在 Android 2.1 中,相同的代码会在一瞬间恢复位置,但随后页面会重新加载并滚动到位置 0,0。
在 Android 2.1 Update 1 中不仅滚动回 0,0,还改变 Zoom 以适应页面宽度(类似于 2.1 中引入的浏览器概览模式)
有谁知道解决方法或知道什么可能导致这种行为?