为啥要使用 FrameLayout 作为 FragmentTransaction 的片段容器? [复制]
Posted
技术标签:
【中文标题】为啥要使用 FrameLayout 作为 FragmentTransaction 的片段容器? [复制]【英文标题】: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
不是强制性的,因此请使用您认为有意义的任何布局!
【参考方案1】:
补充前面的答案,真正的答案是,当您使用片段事务时,您通常希望将片段添加到布局中的已保存位置以进行显示。您基本上希望看到显示这一视图,FrameLayout 之所以成为规范偏好,与设计目的直接相关。简单地说,所有其他布局主要用于多子包含。 FrameLayout 更有效地处理单个孩子,因为除了重力分配之外没有特定的顺序。
【讨论】:
不需要举例,它真的是一个设计选择,在布局项目时的建筑立场。 FrameLayout 通常是一个子布局,而不是线性布局和相对布局,其中几个子布局由位置和方向组成。 而且,框架布局提供切换,因为项目是堆叠的,每个都接收一个位置,您可以操纵它,再次因为框架布局不是基于整个布局位置的方向或位置 OP 的示例使用replace
所以我们可以说我们只有 1 个子片段。
正是您使用替换的事实,这意味着删除任何现有项目并再次添加,这意味着一个项目。因此是框架布局
并非如此,大多数情况下任何布局都可以处理。以上是关于为啥要使用 FrameLayout 作为 FragmentTransaction 的片段容器? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Fragment中的ViewPager的Fragment添加子Fragment要放在onAttach中添加
AppBarLayout 与 FrameLayout 容器作为滚动内容不起作用
使用 LinearLayout 代替 FrameLayout 可以吗?