我分别为纵向和横向模式创建了两个XML文件,并将它们分别保存在文件夹布局和 layout-land 中。
注意:由于某种原因,我在该活动的清单文件中提供了 android:launchMode =“singleTask”。
问题:在纵向和横向模式下,它都需要布局文件夹中的xml。 仅从纵向布局文件夹中获取xml的原因是什么?是因为“单一任务属性”吗?我在这里错过了什么?
提前致谢。
答案 0 :(得分:1)
通常,当您更改方向时,会触发配置更改事件,您的活动将被销毁并在新布局中重新创建。重新创建时,将使用相应的纵向或横向布局。
由于您指示明确处理方向更改,因此不会在方向更改时销毁/重新创建活动 - 因此不会更改布局。要实现您的目标,您需要在应用程序启动时存储原始方向,然后在代码中处理方向更改,如下所示:
private int currentOrientation;
public void onCreate(Bundle sis) {
...
currentOrientation = getResources().getConfiguration().orientation;
}
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(currentOrientation != newConfig.orientation) {
//re-set the layout into your activity
setContentView(R.layout.my_layout);
currentOrientation = newConfig.orientation;
}
}
根据您的逻辑,您可能希望从现有视图中获取值,并在重新设置布局后重新设置它们。