【问题标题】:Why should we use FrameLayout as the fragment container for FragmentTransaction? [duplicate]为什么要使用 FrameLayout 作为 FragmentTransaction 的片段容器? [复制]
【发布时间】:2018-06-10 23:02:49
【问题描述】:

当我阅读有关支持 Android 不同屏幕尺寸的教程时,他们经常使用 FrameLayout 作为 FragmentTransaction 使用的片段的占位符。像这样:

getSupportFragmentMananager().beginTransaction()
.replace(R.id.frame_layout, fragment)

那么我们为什么要使用 FrameLayout 呢?使用 FrameLayout 作为片段容器时有什么优点或缺点吗? (我已经尝试将 RelativeLayout 作为片段容器,它仍然运行良好)。我是新手,希望能得到一个清晰透彻的回答。

编辑:我已阅读您提供的问题链接中的答案(可能重复)。但是,它缺乏明确的例子。我真的想要一个简单的例子来说明为什么我应该使用 FrameLayout 而不是其他布局类型。

【问题讨论】:

  • 我明白了。谢谢 Zeero0
  • 感谢 Zeroo0。我已经阅读了该问题的答案,但缺乏明确的例子。谁能用更容易理解的方式解释一下?
  • 因为片段是堆叠的,这与堆叠其子项的框架布局具有相同的性质
  • I really want a simple example that demonstrate why I should use FrameLayout instead of other layout types. 自己尝试并了解每种布局的不同用法,无论是否使用 Fragment。问问自己:如果 ConstrainsLayout 可以做得更多,我为什么要使用 LinearLayout?
  • 最后说明:如果您只是要使用replace,那么FrameLayout 不是强制性的,因此请使用您认为有意义的任何布局!

标签: android fragment


【解决方案1】:

补充前面的答案,真正的答案是,当您使用片段事务时,您通常希望将片段添加到布局中的已保存位置以进行显示。您基本上希望看到显示这一视图,FrameLayout 之所以成为规范偏好,与设计目的直接相关。简单地说,所有其他布局主要用于多子包含。 FrameLayout 更有效地处理单个孩子,因为除了重力分配之外没有特定的顺序。

【讨论】:

  • 不需要举例,它真的是一个设计选择,在布局项目时的建筑立场。 FrameLayout 通常是一个子布局,而不是线性布局和相对布局,其中几个子布局由位置和方向组成。
  • 而且,框架布局提供切换,因为项目是堆叠的,每个都接收一个位置,您可以操纵它,再次因为框架布局不是基于整个布局位置的方向或位置
  • OP 的示例使用 replace 所以我们可以说我们只有 1 个子片段。
  • 正是您使用替换的事实,这意味着删除任何现有项目并再次添加,这意味着一个项目。因此是框架布局
  • 并非如此,大多数情况下任何布局都可以处理。
猜你喜欢
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 2011-09-07
  • 2016-09-21
相关资源
最近更新 更多