page.title=Layout Resource parent.title=Resource Types parent.link=available-resources.html @jd:body
A layout resource defines the architecture for the UI in an Activity or a component of a UI.
res/layout/filename.xmlR.layout.filename@[package:]layout/filename
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@[+][package:]id/resource_name"
android:layout_height=["dimension" | "fill_parent" | "wrap_content"]
android:layout_width=["dimension" | "fill_parent" | "wrap_content"]
[ViewGroup-specific attributes] >
<View
android:id="@[+][package:]id/resource_name"
android:layout_height=["dimension" | "fill_parent" | "wrap_content"]
android:layout_width=["dimension" | "fill_parent" | "wrap_content"]
[View-specific attributes] >
<requestFocus/>
</View>
<ViewGroup >
<View />
</ViewGroup>
<include layout="@layout/layout_resource"/>
</ViewGroup>
Note: The root element can be either a {@link android.view.ViewGroup}, a {@link android.view.View}, or a {@code <merge>} element, but there must be only one root element and it must contain the {@code xmlns:android} attribute with the {@code android} namespace as shown.
android:idFor the ID value, you should usually use this syntax form: "@+id/name". The
plus symbol, {@code +}, indicates that this is a new resource ID and the aapt tool will
create a new resource integer in the {@code R.java} class, if it doesn't already exist. For
example:
<TextView android:id="@+id/nameTextbox"/>
The nameTextbox name is now a resource ID attached to this element. You can then
refer to the {@link android.widget.TextView} to which the ID is associated in Java:
findViewById(R.id.nameTextbox);
This code returns the {@link android.widget.TextView} object.
However, if you have already defined an ID resource (and it is not
already used), then you can apply that ID to a {@link android.view.View} element by excluding the
plus symbol in the android:id value.
android:layout_height and
android:layout_width:The height and width value can be expressed using any of the dimension units supported by Android (px, dp, sp, pt, in, mm) or with the following keywords:
| Value | Description |
|---|---|
match_parent |
Sets the dimension to match that of the parent element. Added in API Level 8 to
deprecate fill_parent. |
fill_parent |
Sets the dimension to match that of the parent element. |
wrap_content |
Sets the dimension only to the size required to fit the content of this element. |
You can create your own custom {@link android.view.View} and {@link android.view.ViewGroup} elements and apply them to your layout the same as a standard layout element. You can also specify the attributes supported in the XML element. To learn more, read Building Custom Components.
res/layout/main_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
This application code will load the layout for an {@link android.app.Activity}, in the {@link android.app.Activity#onCreate(Bundle) onCreate()} method:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView.(R.layout.main_activity);
}