Layout Resource
A layout resource defines the architecture for the UI in an Activity or a component of a UI.
FILE LOCATION:
res/layout/filename.xml
RESOURCE REFERENCE:
In Java: R.layout.filename
In XML: @[package:]layout/filename
SYNTAX:
<?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 ViewGroup, a View, or a <merge> element, but there must be only one root element and it must contain the xmlns:android attribute with the android namespace.
ELEMENTS:
<ViewGroup>
A container for other View elements.Different kinds of ViewGroup objects include LinearLayout, RelativeLayout, and FrameLayout.
attributes:
android:idResource ID. A unique resource name for the element.
android:layout_height
Dimension or keyword. Required. The height for the group, as a dimension value (or dimension resource) or a keyword ("fill_parent" or "wrap_content").
android:layout_width
Dimension or keyword. Required. The width for the group, as a dimension value (or dimension resource) or a keyword ("fill_parent" or "wrap_content").
<View<
An individual UI component, generally referred to as a "widget". Different kinds of View objects include TextView, Button, and CheckBox.
attributes :android:id,android:layout_height,android:layout_width.
<include>
Includes a layout file into this layout.
attributes :android:id,android:layout_height,android:layout_width.
Caution: If you want to override layout attributes using the <include> tag, you must override both android:layout_height and android:layout_width in order for other layout attributes to take effect.
Another way to include a layout is to use ViewStub. It is a lightweight View that consumes no layout space until you explicitly inflate it.
<merge>
Using this as the root element is useful when you know that this layout will be placed into a layout that already contains the appropriate parent View.
Value for
android:id
For the ID value, you should usually use this syntax form: "@+id/name". The plus symbol, +, indicates that this is a new resource ID and the aapt tool will create a new resource integer in the 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 TextView to which the ID is associated in Java:
findViewById(R.id.nameTextbox);
This code returns the TextView object.
Value for
android:layout_height and
android:layout_width:
| 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. |
Custom View elements
You can create your own custom View and 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.
EXAMPLE:
XML file saved at
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 Activity, in the onCreate() method:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}