0

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

现在我希望布局的某个部分在方向改变时改变。我会定期对layout-land文件夹执行此操作,这会起作用,但现在不行了。即使我更改为横向布局,纵向布局也会保持不变,尽管它显然是重绘的,因为其中的项目会根据新的方向限制改变它们的位置。

我认为这是因为布局只是重绘,但资源没有从 res 文件夹中重新选择。

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

谢谢。

4

3 回答 3

0

Without onConfigurationChanged android redraw the scene by it's own (it setLayouResource according to the orientation).

When you write onConfigurationChanged you say to OS that you will handle all thing by hands and with onConfigurationChanged android only rotate the corresponding view. If you want to use layout from layout-land the only way is to call setLayouResource (or move views (change it's layout parameters) dynamically - but this way is not very good) and restore all of your data.

于 2013-01-21T15:13:10.343 回答
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",否则您的活动可能会重新加载。

于 2013-05-20T20:01:30.230 回答
0

在 AndroidManifest 中插入参数: android:configChanges="orientation" 在活动上。

于 2013-01-21T15:17:15.523 回答