我在修改方向更改期间保留Android的WebView控件中加载的内容的当前滚动位置时遇到问题。该问题目前仅存在于Android 2.1和Android 2.1 Update 1
中我使用的代码基于默认的Browser应用程序,如下所示:
@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,还会更改缩放以适应页面宽度(类似于2.1中引入的浏览器概述模式)
是否有人知道某种解决方法或知道可能导致此类行为的原因?
答案 0 :(得分:3)
只需在onRestoreInstanceState中加载WebViewState。
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
myWebView.restoreState(savedInstanceState);
}
答案 1 :(得分:0)
将方向从横向更改为纵向或反之亦然,它会启动新活动。因此,您可以打开更新活动。 将代码放入AndroidManifest.xml并重新加载应用程序。
"activity android:name=".Main
android:configChanges="orientation"
在活动标签中。感谢