У меня проблема с сохранением текущей позиции прокрутки содержимого, загруженного в элемент управления Android WebView во время изменения ориентации. В настоящее время проблема существует только в Android 2.1 и Android 2.1, обновление 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, обновление 1, он не только прокручивает обратно до 0,0, но также изменяет масштаб изображения в соответствии с шириной страницы (аналогично режиму обзора браузера, представленному в 2.1)
Кто-нибудь знает об обходном пути или знает, что может вызвать такое поведение?