我有一个应用程序,我在其中覆盖onConfigurationChanged
,因为我不希望销毁和重建活动。它工作正常。
现在我希望在更改方向时更改布局的某个部分。我会定期使用layout-land
文件夹执行此操作,但这样做有效,但现在却没有。即使我更改为横向,纵向布局也会保留,但显然会重新绘制,因为其中的项目会根据新的方向限制更改其位置。
我认为这是因为布局仅重新绘制,但资源不会从res文件夹中重新选择。
有什么想法吗? (我不想使用setLayoutResource
或类似的东西,我宁愿使用更通用的解决方案。)
感谢。
答案 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.xml
和layout-land/yourlayout.xml
。您可以添加更多 - 适用于不同尺寸等。
不要忘记设置android:configChanges="orientation|screenSize"
,否则您的活动可能会重新加载。