我对LinearLayout、RelativeLayout和AbsoluteLayout之间的区别感到困惑。请问有人能告诉我它们之间的确切区别吗?
我对LinearLayout、RelativeLayout和AbsoluteLayout之间的区别感到困惑。请问有人能告诉我它们之间的确切区别吗?
LinearLayout
可以将视图一次对齐(垂直或水平)。
RelativeLayout
是基于视图与其父视图和其他视图之间的关系来布局的。
ConstraintLayout
类似于 RelativeLayout,它使用关系来定位和调整小部件的大小,但具有额外的灵活性,并且在布局编辑器中更易于使用。
WebView
用于加载 HTML、静态或动态页面。
FrameLayout
用于将子视图堆叠在一起,就像在框架内放置卡片一样,我们可以将一个视图堆叠在另一个视图上方或任何位置。
已弃用 - AbsoluteLayout
意味着您必须给出视图应该出现的确切位置。
更多信息,请参见此网址:https://developer.android.com/guide/topics/ui/declaring-layout#CommonLayouts
帧布局旨在屏幕上阻挡出一个区域以显示单个项。一般来说,应该使用FrameLayout来容纳一个单独的子视图,因为如果不重叠彼此,很难以可扩展的方式组织子视图以适应不同的屏幕尺寸。但是,您可以向FrameLayout添加多个子项,并通过为每个子项分配重心(使用android:layout_gravity属性)来控制它们在FrameLayout内的位置。
子视图以堆栈形式绘制,最近添加的子视图位于顶部。FrameLayout的大小是其最大子项的大小(加上填充),无论是否可见(如果FrameLayout的父级允许)。
RelativeLayout是一种非常强大的用户界面设计工具,因为它可以消除嵌套的视图组并使您的布局层次结构保持扁平,从而提高性能。如果您发现自己使用了几个嵌套的LinearLayout组,则可以将它们替换为单个RelativeLayout。
(当前文档在此)
一个TableLayout包含多个TableRow
对象,每个对象定义了一行(实际上还可以有其他子元素,将在下面解释)。TableLayout容器不会为其行、列或单元格显示边框线。每行可以有零个或多个单元格,每个单元格可以容纳一个View对象。该表的列数与具有最多单元格的行相同。表格可以留空单元格。单元格可以跨越多个列,就像HTML中一样。
列的宽度由该列中最宽的单元格所在的行定义。
注意:绝对布局已被弃用。
LinearLayout:一种布局方式,将其子视图组织成单个水平或垂直行。如果窗口长度超过了屏幕长度,则会创建滚动条。这意味着您可以逐个对齐视图(垂直/水平)。
RelativeLayout:此布局方式允许您指定子对象相对于彼此的位置(子A在子B的左侧),或相对于父级(与父级顶部对齐)。它基于视图与其父级和其他视图之间的关系。
WebView:用于加载HTML、静态或动态页面。
更多信息请参阅以下链接:http://developer.android.com/guide/topics/ui/layout-objects.html
LinearLayout - 在LinearLayout中,视图可以按垂直或水平方向组织。
RelativeLayout - RelativeLayout比LinearLayout更复杂,因此提供了更多的功能。视图是相对于彼此放置的,正如其名称所示。
FrameLayout - 它表现为单个对象,其子视图重叠在彼此上面。FrameLayout根据最大的子元素的大小来确定自己的大小。
Coordinator Layout - 这是Android支持库中引入的最强大的ViewGroup。它的行为类似于FrameLayout,并具有许多协调其子视图的功能,例如浮动按钮和Snackbar、带有可滚动视图的工具栏。
LinearLayout 可以横向或纵向地排列元素。
RelativeLayout 帮助你根据特定的规则安排UI元素。您可以指定诸如将其与父元素的左边缘对齐、将其放置在此元素的左侧/右侧等规则。
AbsoluteLayout 用于绝对定位,即您可以指定视图应该去的精确坐标。
FrameLayout 允许在Z轴上放置视图。这意味着您可以将视图元素堆叠在彼此之上。
AbsoluteLayout
被弃用是有原因的;如果内容不适合,它会随意扔东西。你最好使用LinearLayout
并将其所有填充设置为0
。 - EpicPandaForce