我测试了片段,但是处理片段会使事情变得更加复杂,片段本身需要保存和恢复,这在具有 javascript 状态的 web 视图中可能不起作用,所以我搜索了更多,并在某处找到了一篇不错的文章并进行了一些修改我提出了一个我建议的解决方案:
首先,添加android:configChanges="orientation|screenSize|keyboard|keyboardHidden",以便应用处理配置更改而不是android。
为横向和纵向制作两种不同的布局。在这两种布局中而不是 webview 中放置一个 FrameLayout 作为 webview 的占位符。
像这样定义 initUI 方法,并将与 UI 初始化相关的所有内容都放在这个方法中:
public void initui()
{
setContentView(R.layout.main);
if (wv == null) wv = new WebView(this);
((LinearLayout)findViewById(R.id.webviewPlace)).addView(wv);
findViewById(R.id.home).setOnClickListener(this);
}
如果 webview 尚不存在,它将被创建并在 setContentView(R.layout.main) 之后添加到布局中。您需要的任何其他 UI 定制都是在此之后进行的。
在onConfigurationChanged:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
((LinearLayout)findViewById(R.id.webviewPlace)).removeAllViews();
super.onConfigurationChanged(newConfig);
initUI();
}
在onConfigChange 中,webview 将从旧占位符中删除,initui 将被调用,这会将其添加回新布局。
在oncreate() 中调用initui() 以便第一次初始化ui。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initUI()
}
我希望它对某人有所帮助。