0

我想在onConfigurationChange屏幕方向改变时重新排列我的视图。Activity 重启和视图重新创建过于消耗;所以我必须保持观点。

我想改变一个 LinearLayout 的方向。如果方向改变,我想交换所有子元素的宽度和高度值。(在我的情况下,它们可以是0dpwrap_contentmatch_parent

当然,我可以保持旧的方向并迭代孩子们交换他们的宽度和高度。但这项任务对我来说似乎是必不可少的,而不是独一无二的。有没有更简单的方法呢?也许它已经在某个地方实施了?

4

1 回答 1

2

它已实施,但仅在活动重新启动时才实施。

一种不涉及迭代的方法是使用横向布局自己重新创建视图,这基本上是 Android 系统会做的事情。好处是您不必重新创建 Activity 的其余部分。缺点是您必须取消绑定已应用于视图的所有侦听器(onClickListener、onItemClickListener 等)。不这样做会造成内存泄漏。

但是,有一个简单的方法可以做到这一点。将您的布​​局处理为仅控制视图的单个片段样式。所有点击和用户交互都由该片段处理,该片段将操作发送回活动。当onConfigurationChange被调用时,只需从 中删除这个 Fragment FragmentManager,然后添加一个新的Fragment.

于 2016-11-03T15:29:12.803 回答