Я пытаюсь использовать этот код (от here):дисплей WebView неправильно содержания после добавления в FrameLayout
public class StatePreservingImplActivity extends Activity {
protected FrameLayout webViewPlaceholder;
protected WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.state_preserving_impl);
// Initialize the UI
initUI();
}
protected void initUI() {
// Retrieve UI elements
webViewPlaceholder = ((FrameLayout)findViewById(R.id.webViewPlaceholder));
// Initialize the WebView if necessary
if (webView == null) {
// Create the webview
webView = new WebView(this);
webView.setLayoutParams(new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(true);
webView.getSettings().setLoadsImagesAutomatically(true);
// Load the URLs inside the WebView, not in the external web browser
webView.setWebViewClient(new WebViewClient());
// Load a page
}
//ATTENTION
webView.loadUrl("http://MYPAGE.php");
// Attach the WebView to its placeholder
webViewPlaceholder.addView(webView);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (webView != null) {
// Remove the WebView from the old placeholder
webViewPlaceholder.removeView(webView);
}
super.onConfigurationChanged(newConfig);
// Load the layout resource for the new configuration
setContentView(R.layout.state_preserving_impl);
// Reinitialize the UI
initUI();
}
В вебе зрении я пытаюсь отобразить страницу, которая вычисление размера контента с помощью JavaScript и окна .innerWidth/высота. После запуска приложения все в порядке. Но если я поворачиваю дисплей (на эмуляторе через NumPad 7 или 9), содержимое веб-дисплея для старых значений window.innerWidth/height, несмотря на то, что webView перезагружен URL (см. // ВНИМАНИЕ). Если я вращаю устройство 2 или 3 или 4 или более раз, он всегда использует значения, которые раньше соответствовали состоянию.
Исследование было так долго, но я подозреваю, что в этой строке
webViewPlaceholder = ((FrameLayout)findViewById(R.id.webViewPlaceholder));
я стареть экземпляр FrameLayout, потому что новый формат не было времени, чтобы закончить загрузку. И я до сих пор не понимаю, как в этом примере кода WebView передает правильные значения ширины и высоты JavaScript, прежде чем он будет связан с FrameLayout после запуска приложения.
Я пытался найти решение, но не имел успеха. Я буду рад за любую помощь.
P.S. извините за свои знания английского языка.