【发布时间】:2016-05-10 17:48:10
【问题描述】:
我的一个布局中有一个小的 webView,它充当我网站的新闻提要。每次我更改旋转时,它都会重新加载网页。
所以我编辑了代码以包含配置更改和恢复状态。然后调整我的 android 清单以包含来自开发站点的配置更改,其中包括方向和屏幕尺寸。
这解决了保存状态的问题,但反过来又产生了一个新问题,即在某些设备上处于横向模式时,我有不同的尺寸布局。但是随着清单的设置,它会覆盖屏幕大小。是否可以保存状态但没有在我的清单中使用屏幕大小。所以我可以使用我的横向布局
这是我的方向更改代码。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_homescreen);
if (savedInstanceState != null)
((WebView)findViewById(R.id.neweview)).restoreState(savedInstanceState);
svHomeScreen = (ScrollView) findViewById(R.id.svHomeScreen);
svHomeScreen.setScrollbarFadingEnabled(false);
wv = (WebView) findViewById(R.id.neweview
);
wv.setScrollbarFadingEnabled(false);
wv.getSettings().setJavaScriptEnabled(true);
wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
wv.getSettings().setRenderPriority(WebSettings.RenderPriority.NORMAL);
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
if (Build.VERSION.SDK_INT >= 19) {
// chromium, enable hardware acceleration
wv.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
// older android version, disable hardware acceleration
wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
wv.canGoBackOrForward(5);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv.setPadding(0, 0, 0, 0);
wv.loadUrl(NEWS);
那么我的清单文件有
<activity
android:name=".Homescreen"
android:label="@string/title_activity_homescreen"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
/>
我添加了一个容器和一个 web 视图片段,但现在当旋转为横向时视图消失了。然后当我切换回来时完全消失。所以我尝试向其中添加保存状态和保存状态,当旋转到横向时加载 web 视图,但在返回纵向时应用程序崩溃
【问题讨论】:
-
您是否尝试在您的
<activity>标签(清单)中添加android:configChanges="orientation|screenSize"? -
是的尝试过,它保存了状态,但它覆盖了我的屏幕尺寸,这是我的问题,如果我删除 |screensize 选项它会恢复为不保存状态
-
您可以尝试将其放在片段中 - 当屏幕旋转时,片段不会像活动一样残酷地重新创建。您可能会发现片段中的 webview 完好无损地在旋转中幸存下来。
-
有人可以告诉我如何将它写成一个片段,因为我从未使用过片段
-
感谢@adelphus 这个片段是我需要的,我会回答下面的问题