我正在制作自己的浏览器,我需要帮助。我在努力拯救国家。我试过以下方法,但不是我要找的解决方案。
我试过了:
<activity android:name=".About"
android:configChanges="orientation|keyboard|screenSize" />
但问题是工具栏没有调整大小,所以标题太小,工具栏高度最小(如果我开始横向旋转到纵向),标题太大,高度更大(如果我开始纵向旋转到横向)。
我试过的其他东西是
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
if (savedInstanceState != null)
((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState.getBundle("webViewState");
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Bundle bundle = new Bundle();
webView.saveState(bundle);
outState.putBundle("webViewState", bundle);
}
但是WebView没有正确保存。
我能做些什么来保存webview状态时旋转和没有工具栏大小的问题?
如果我处理配置更改并尝试调整工具栏和文本大小可能会更好?
你应该把Webview状态保存到它自己的Bundle中。另外,别忘了打电话给super.onSaveInstanceState(outState)
。
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blah);
if (savedInstanceState != null)
((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState.getBundle("webViewState"));
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Bundle bundle = new Bundle();
webView.saveState(bundle);
outState.putBundle("webViewState", bundle);
}
<activity android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
第二步
if (savedInstanceState != null)
{ ((WebView) findViewById(R.id.webView)).restoreState(savedInstanceState.getBundle("webViewState"));}
else {
wv1=(WebView)findViewById(R.id.webView);
load(); // create seprate functin to loadweb
}
第三步
public void load() {
wv1=(WebView)findViewById(R.id.webView);
wv1.setWebViewClient(new MyBrowser());
wv1.getSettings().setLoadsImagesAutomatically(true);
wv1.getSettings().setJavaScriptEnabled(true);
wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv1.loadUrl("http://citynsr.ueuo.com/");
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
向前一步
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Bundle bundle = new Bundle();
wv1.saveState(bundle);
outState.putBundle("webViewState", bundle);
}
@Override
protected void onRestoreInstanceState(Bundle state) {
super.onRestoreInstanceState(state);
Bundle bundle = new Bundle();
wv1.saveState(bundle);
state.putBundle("webViewState", bundle);
}
改进@EpicPandaForce答案,它有效!
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null)
((WebView) findViewById(R.id.webView)).restoreState(savedInstanceState.getBundle("webViewState"));
else {
webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("https://www.YAHOO.com/");
}
}
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Bundle bundle = new Bundle();
webView.saveState(bundle);
outState.putBundle("webViewState", bundle);
}
我使用
<activity
android:name="XYZ.activity.your.browser.activity"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
android:windowSoftInputMode="adjustPan"/>
在我的AndroidManifest.xml文件中工作得很好。没有调整大小的问题。
我不建议在常规活动中使用这种方法,但是如果你只有一个WebView,一个工具栏和几个按钮,那么这应该是好的