框架和相对布局之间的区别?

Posted

技术标签:

【中文标题】框架和相对布局之间的区别?【英文标题】:Difference between Frame and Relative layout? 【发布时间】:2012-07-21 17:28:12 【问题描述】:

我是 android 编程新手,但从我对 documentation 的布局的了解来看,RelativeLayout 主要用于当您需要基于某些规则的视图时使用,而当您想要重叠视图时使用 FrameLayout。

但不幸的是,对于以下程序,我使用 RelativeLayout 完成了 FrameLayout 的工作。我完成了我的工作,但为了理解,我是否遗漏了一些差异? 另外,这些按钮是如何覆盖我的图像的? (即使是另一张图片也是重叠的。)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_ >

<ImageView
    android:id="@+id/imageView1"
    android:layout_
    android:layout_
    android:background="@drawable/ic_launcher"
    />

<ImageView
    android:id="@+id/imageView2"
    android:layout_
    android:layout_
    android:background="@drawable/ic_launcher"
    android:layout_alignParentTop="true"
    android:layout_alignLeft="@id/imageView1"
    />

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:layout_alignBottom="@+id/imageView1"
    android:gravity="center"
    android:orientation="horizontal"
    android:weightSum="1.0" >

<Button
    android:id="@+id/button1"
    android:layout_
    android:layout_
    android:layout_weight="0.33"
    android:text="Login" />

<Button
    android:id="@+id/button2"
    android:layout_
    android:layout_
    android:layout_weight="0.33"
    android:text="Register" />

<Button
    android:id="@+id/button3"
    android:layout_
    android:layout_
    android:layout_weight="0.33"
    android:text="Try application" />

</LinearLayout>

</RelativeLayout>

【问题讨论】:

***.com/a/4905403/1434631 【参考方案1】:

RelativeLayout 可以使用:

android:layout_toEndOf="@id/some_view"
android:layout_toStartOf="@id/some_view"
android:layout_above="@id/some_view"
android:layout_below="@id/some_view"

确保视图之间的排列正确无误。 FrameLayout 非常相似,只是它只使用重力来显示其视图(没有关系)。

我还建议您查看 ConstraintLayout 组件。 ConstraintLayout 允许您创建具有平面视图层次结构(无嵌套视图组)的大型复杂布局。它与RelativeLayout 类似,所有视图都根据兄弟视图和父布局之间的关系进行布局,但它比RelativeLayout 更灵活,更易于与Android Studio 的布局编辑器一起使用。

【讨论】:

【参考方案2】:

RelativeLayout 基于视图的关系。它是一个布局管理器,可帮助您根据某些规则排列 UI 元素。您可以指定以下内容:将其与父级左边缘对齐,将其放置在此元素的左侧/右侧等。

FrameLayout 允许沿 Z 轴放置。也就是说,您可以将视图元素一层一层堆叠。

【讨论】:

你也可以在RelativeLayout中堆叠【参考方案3】:

RelativeLayout - 正如这个视图组中的名称所暗示的那样,视图是相对于彼此放置的。最常用的relativelayout属性是

android:layout_toLeftOf="@id/some_view1"
android:layout_toRightOf="@id/some_view2"
android:layout_above="@id/some_view3"
android:layout_below="@id/some_view4"
android:layout_toendof="@id/some_view5"
android:layout_tostartof="@id/some_view6"

视图是相对放置的。在开发复杂的设计时真的很有帮助。

FrameLayout - 它表现为单个对象视图不是相对于每个视图而是根据 FrameLayout 放置的。 FrameLayout 采用最大子视图的大小。

android:gravity="center_horizontal|center_vertical|bottom"

使用上述属性子视图位置被修改。

【讨论】:

以上是关于框架和相对布局之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何在相对布局中的布局之间居中

常见的CSS布局单位

CSS布局浮动和定位属性的区别

Android 相对布局 各控件指之间的间距怎么设置

Android 相对布局 各控件指之间的间距怎么设置

相对布局