曾几何时,我使用了他们的实现,但是在阅读了 Android 文档后,我意识到他们的大部分代码都是毫无意义的,因为注册配置更改(在清单中)意味着您的活动不会因为它而被破坏通常是。
长话短说,您不需要使用FrameLayout 作为webView 的容器,您可能不需要onConfigurationChanged 等。如果有时间我会发布一些代码作为示例。
现在,请确保清单文件中包含以下内容
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
而不是
android:configChanges="keyboard|keyboardHidden|orientation"
因为在方向改变时设备可能会改变屏幕尺寸
编辑这是我所做的(从我的一个项目中略读,所以我可能遗漏了一些小细节)
在 AndroidManifest.xml 中
<activity android:name=".Activities.WebWrapperActivity"
android:theme="@android:style/Theme.NoTitleBar"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"/>
web_wrapper_activity_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView android:id="@+id/web_wrapper_activity_web_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbarStyle="outsideOverlay"/>
</LinearLayout>
活动(或其中的一部分)
public class WebWrapperActivity extends Activity {
private WebView _webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_wrapper_activity_layout);
init();
}
private void init() {
_webView = (WebView) findViewById(R.id.web_wrapper_activity_web_view);
_webView.setScrollbarFadingEnabled(true);
_webView.getSettings().setLoadsImagesAutomatically(true);
_webView.getSettings().setJavaScriptEnabled(true);
_webView.getSettings().setAllowFileAccess(true);
_webView.getSettings().setSavePassword(false);
_webView.getSettings().setPluginState(WebSettings.PluginState.ON);
_webView.loadUrl(“http://www.google.com”);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
_webView.saveState(outState);
}
}
正如我之前提到的,如果您的 webView 是 Activity 中的唯一视图,您可能不需要 onConfigurationChanged。
如果您有任何问题,请告诉我