使用 LinearLayout 代替 FrameLayout 可以吗?

Posted

技术标签:

【中文标题】使用 LinearLayout 代替 FrameLayout 可以吗?【英文标题】:Is it fine to use LinearLayout instead of FrameLayout? 【发布时间】:2016-04-05 01:55:20 【问题描述】:

我正在构建一个包含两个片段的 Activity MainActivity 的应用程序。我遇到了许多使用FrameLayout 作为片段布局的父容器的教程。

但是,我知道我仍然可以使用 LinearLayout 作为片段的父容器,并且它工作得非常好(到目前为止)。

我的问题,不使用FrameLayout 作为片段布局的父容器有什么副作用吗?

如果没有,那么使用FrameLayout 相对于LinearLayout(或其他可能的布局)作为片段布局的父容器有什么优势。

【问题讨论】:

你能把你使用FrameLayoutLinearLayout的代码贴出来 你应该改一下标题,上面写着fragmentlayout... 【参考方案1】:

Fragments 本身就像任何View 一样呈现,因此您可以根据您希望布局的外观使用您想要的任何父ViewGroup。这意味着 LinearLayoutFrameLayoutFragments 没有任何固有的优势。

FrameLayoutLinearLayout 之间的主要区别在于 Views 堆栈在 FrameLayout 内。

换句话说,如果您希望Fragments 可能重叠,请使用FrameLayout。如果您希望它们线性显示,请使用LinearLayout。如果是全屏Fragment,那么您选择哪个可能并不重要。

【讨论】:

这是一个简单而完美的答案。【参考方案2】:

FrameLayout比LinearLayout和RelativeLayout效率更高。因为它是最简单的基础布局,子布局之间没有关联。 FrameLayout适用于stack-up view,常与ScrollView配合使用。

【讨论】:

【参考方案3】:

完全没问题。您可以使用。但是,总的来说:

LinearLayout 用于垂直或水平对齐视图。以便多个子视图可以相应地排列。

FrameLayout 用于加载一个在另一个之上的视图。所以FrameLayout 用于保存单个子视图,因为在FrameLayout 中很难管理多个视图。对于前。如果您想使用单个CardView,那么FrameLayout 是完美的。

【讨论】:

以上是关于使用 LinearLayout 代替 FrameLayout 可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何让LinearLayout的background在整个屏幕中心显示

枚举Enum

java怎么创建框架

Android攻城狮布局优化

如何使用android中的拖放框架从一个LinearLayout切换到另一个LinearLayout

如何使用对齐的元素动态创建 LinearLayout