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: