android以编程方式重新加载布局资源

时间:2013-01-21 14:50:40

标签: android layout orientation

我有一个应用程序,我在其中覆盖onConfigurationChanged,因为我不希望销毁和重建活动。它工作正常。

现在我希望在更改方向时更改布局的某个部分。我会定期使用layout-land文件夹执行此操作,但这样做有效,但现在却没有。即使我更改为横向,纵向布局也会保留,但显然会重新绘制,因为其中的项目会根据新的方向限制更改其位置。

我认为这是因为布局仅重新绘制,但资源不会从res文件夹中重新选择。

有什么想法吗? (我不想使用setLayoutResource或类似的东西,我宁愿使用更通用的解决方案。)

感谢。

3 个答案:

答案 0 :(得分:0)

没有onConfigurationChanged android重绘场景(根据方向setLayouResource)。

当你写onConfigurationChanged时,你对操作系统说,你将手动处理所有事情,而onConfigurationChanged只能旋转相应的视图。如果你想使用layout-land中的布局,唯一的方法是动态调用setLayouResource(或移动视图(更改它的布局参数) - 但这种方式不是很好)并恢复所有数据。

答案 1 :(得分:0)

在AndroidManifest中,在活动中插入参数:android:configChanges =“orientation”。

答案 2 :(得分:0)

@Override
public void onConfigurationChanged(Configuration newConfig) {
  super.onConfigurationChanged(newConfig);
  setContentView(R.layout.yourlayout);
}

并提供两个版本的 yourlayout.xml layout/yourlayout.xmllayout-land/yourlayout.xml。您可以添加更多 - 适用于不同尺寸等。

不要忘记设置android:configChanges="orientation|screenSize",否则您的活动可能会重新加载。