Layout Resource
See also
A layout resource defines the architecture for the UI in an Activity or a component of a UI.
-
file location:
-
res/layout/filename.xml
The filename will be used as the resource ID.
compiled resource datatype:
-
Resource pointer to a
View
(or subclass) resource.
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
, aView
, or a<merge>
element, but there must be onlyone root element and it must contain thexmlns:android
attribute with theandroid
namespace as shown.
elements:
-
Value for
android:id
For the ID value, you should usually use this syntax form:
"@+id/name"
. Theplus symbol,+
, indicates that this is a new resource ID and theaapt
tool willcreate a new resource integer in theR.java
class, if it doesn't already exist. Forexample:<TextView android:id="@+id/nameTextbox"/>
The
nameTextbox
name is now a resource ID attached to this element. You can thenrefer to theTextView
to which the ID is associated in Java:findViewById(R.id.nameTextbox);
This code returns the
TextView
object.However, if you have already defined an ID resource (and it is notalready used), then you can apply that ID to a
View
element by excluding theplus symbol in theandroid:id
value.Value for
android:layout_height
andandroid: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 todeprecate 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
andViewGroup
elements and apply them to your layout the same as a standard layoutelement. You can also specify the attributes supported in the XML element. To learn more,readBuilding Custom Components.
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 theonCreate()
method: -
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView.(R.layout.main_activity); }
see also: