<ViewGroup>
- A container for other {@link android.view.View} elements. There are many
different kinds of {@link android.view.ViewGroup} objects and each one lets you
specify the layout of the child elements in different ways. Different kinds of
{@link android.view.ViewGroup} objects include {@link android.widget.LinearLayout},
{@link android.widget.RelativeLayout}, and {@link android.widget.FrameLayout}.
You should not assume that any derivation of {@link android.view.ViewGroup}
will accept nested {@link android.view.View}s. Some {@link android.view.ViewGroup}s
are implementations of the {@link android.widget.AdapterView} class, which determines
its children only from an {@link android.widget.Adapter}.
attributes:
android:id
- Resource ID. A unique resource name for the element, which you can
use to obtain a reference to the {@link android.view.ViewGroup} from your application. See more
about the value for {@code android:id} below.
android:layout_height
- Dimension or keyword. Required. The height for the group, as a
dimension value (or dimension resource) or a keyword ({@code "fill_parent"}
or {@code "wrap_content"}). See the valid values below.
android:layout_width
- Dimension or keyword. Required. The width for the group, as a
dimension value (or dimension resource) or a keyword ({@code "fill_parent"}
or {@code "wrap_content"}). See the valid values below.
More attributes are supported by the {@link android.view.ViewGroup}
base class, and many more are supported by each implementation of
{@link android.view.ViewGroup}. For a reference of all available attributes,
see the corresponding reference documentation for the {@link android.view.ViewGroup} class
(for example, the LinearLayout XML
attributes).
<View>
- An individual UI component, generally referred to as a "widget". Different
kinds of {@link android.view.View} objects include {@link android.widget.TextView},
{@link android.widget.Button}, and {@link android.widget.CheckBox}.
attributes:
android:id
- Resource ID. A unique resource name for the element, which you can use to
obtain a reference to the {@link android.view.View} from your application. See more about
the value for {@code android:id} below.
android:layout_height
- Dimension or keyword. Required. The height for the element, as
a dimension value (or dimension resource) or a keyword ({@code "fill_parent"}
or {@code "wrap_content"}). See the valid values below.
android:layout_width
- Dimension or keyword. Required. The width for the element, as
a dimension value (or dimension resource) or a keyword ({@code "fill_parent"}
or {@code "wrap_content"}). See the valid values below.
More attributes are supported by the {@link android.view.View}
base class, and many more are supported by each implementation of
{@link android.view.View}. Read Layouts for more information. For
a reference of all available attributes,
see the corresponding reference documentation (for example, the TextView XML attributes).
<requestFocus>
- Any element representing a {@link android.view.View} object can include this empty element,
which gives its parent initial focus on the screen. You can have only one of these
elements per file.
<include>
- Includes a layout file into this layout.
attributes:
layout
- Layout resource. Required. Reference to a layout
resource.
android:id
- Resource ID. Overrides the ID given to the root view in the included layout.
android:layout_height
- Dimension or keyword. Overrides the height given to the root view in the
included layout. Only effective if
android:layout_width
is also declared.
android:layout_width
- Dimension or keyword. Overrides the width given to the root view in the
included layout. Only effective if
android:layout_height
is also declared.
You can include any other layout attributes in the <include>
that are
supported by the root element in the included layout and they will override those defined in the
root element.
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 {@link android.view.ViewStub}. It is a lightweight
View that consumes no layout space until you explicitly inflate it, at which point, it includes a
layout file defined by its {@code android:layout} attribute. For more information about using {@link
android.view.ViewStub}, read Loading
Views On Demand.
<merge>
- An alternative root element that is not drawn in the layout hierarchy. 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 to contain the children of the
<merge>
element. This is particularly useful when you plan to include this layout
in another layout file using <include>
and
this layout doesn't require a different {@link android.view.ViewGroup} container. For more
information about merging layouts, read Re-using Layouts with <include/>.
Value for android:id
For 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.
Value for 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. |
Custom View elements
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,
see the Custom Components developer
guide.
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 {@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);
}