9

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

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

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

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/ic_launcher"
    />

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageView1"
    android:gravity="center"
    android:orientation="horizontal"
    android:weightSum="1.0" >

<Button
    android:id="@+id/button1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.33"
    android:text="Login" />

<Button
    android:id="@+id/button2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.33"
    android:text="Register" />

<Button
    android:id="@+id/button3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.33"
    android:text="Try application" />

</LinearLayout>

</RelativeLayout>
4

3 回答 3

18

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 的布局编辑器一起使用。

于 2012-07-23T13:17:03.590 回答
10

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

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

于 2015-06-01T08:15:22.817 回答
0

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"

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

于 2017-01-02T09:13:19.547 回答