RelativeLayout
is a ViewGroup
that displays
child View
elements in relative positions. The position of a View
can be specified as relative to sibling elements (such as to the left-of or below
a given element) or in positions relative to the RelativeLayout
area (such as
aligned to the bottom, left of center).
A RelativeLayout
is a very powerful utility for designing a user
interface because it can eliminate nested ViewGroup
s. If you find
yourself using several nested LinearLayout
groups, you may be able to
replace them with a single RelativeLayout
.
- Start a new project named HelloRelativeLayout.
- Open the
res/layout/main.xml
file and insert the following:<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Type here:"/>
<EditText
android:id="@+id/entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:layout_below="@id/label"/>
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:text="OK" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/ok"
android:layout_alignTop="@id/ok"
android:text="Cancel" />
</RelativeLayout>Notice each of the
android:layout_*
attributes, such aslayout_below
,layout_alignParentRight
, andlayout_toLeftOf
. When using aRelativeLayout
, you can use these attributes to describe how you want to position eachView
. Each one of these attributes define a different kind of relative position. Some attributes use the resource ID of a siblingView
to define its own relative position. For example, the lastButton
is defined to lie to the left-of and aligned-with-the-top-of theView
identified by the IDok
(which is the previousButton
).All of the available layout attributes are defined in
RelativeLayout.LayoutParams
. - Make sure you load this layout in the
onCreate()
method:public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}The
setContentView(int)
method loads the layout file for theActivity
, specified by the resource ID —R.layout.main
refers to theres/layout/main.xml
layout file. - Run the application.
You should see the following layout:
