Android:在方向更改时交换宽度和高度

时间:2016-11-03 15:15:09

标签: android android-linearlayout android-layoutparams

我希望在屏幕方向更改时在onConfigurationChange重新排列我的观看次数。活动重启和观看娱乐太消耗;所以我必须保持观点。

我想改变一个LinearLayout的方向。如果方向已更改,我想交换所有子元素的宽度和高度值。 (就我而言,它们可以是0dpwrap_contentmatch_parent。)

当然,我可以保持旧的方向,并迭代孩子交换他们的宽度和高度。但这项任务看起来很重要,对我来说并不是唯一这样有更简单的方法吗?也许它已经在某处实现了?

1 个答案:

答案 0 :(得分:2)

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

一种不涉及迭代的方法是使用横向布局重新创建View,这实际上是Android系统的功能。但好处是您不必重新创建其余的活动。缺点是您必须取消绑定已应用于视图的所有侦听器(onClickListener,onItemClickListener等)。不这样做会造成内存泄漏。

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