Layout resource  |  Views  |  Android Developers Skip to main content / English Deutsch Español – América Latina Français Indonesia Italiano Polski Português – Brasil Tiếng Việt Türkçe Русский עברית العربيّة فارسی हिंदी বাংলা ภาษาไทย 中文 – 简体 中文 – 繁體 日本語 한국어 Android Studio Sign in Home Guides Home Guides Android Studio Architecture for Views Recommendations for Android architecture About view binding Migrate from Kotlin synthetics to view binding Data binding library About data binding Get started Layouts and binding expressions Work with observable data objects Generated binding classes Binding adapters Bind layout views to Architecture Components Two-way data binding Lifecycle for Views Handling lifecycles with lifecycle-aware components Save UI states ViewModel overview Create ViewModels with dependencies ViewModel Scoping APIs Saved State module for ViewModel ViewModel APIs cheat sheet LiveData Use Kotlin coroutines with lifecycle-aware components Paging for Views Page from network and database Transform data streams Manage and present loading states Test your Paging implementation Load and display paged data Migrate to Paging 3 About Paging 2 Display paged lists Load paged data Dependency injection for Views Dependency injection with Hilt Manual dependency injection Hilt testing guide App entry points for Views The activity lifecycle App resources for Views App resources overview Handle configuration changes Localize your app Complex XML resources Drawable Layout Animation String resources Color state list Menu Font Style More types UI layer for Views UI layer UI events UI State production Android Developers Develop Core areas UI Views Guides Layout resource Stay organized with collections Save and categorize content based on your preferences. 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 is 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" | "match_parent" | "wrap_content"] android:layout_width=["dimension" | "match_parent" | "wrap_content"] [ViewGroup-specific attributes] > <View android:id="@[+][package:]id/resource_name" android:layout_height=["dimension" | "match_parent" | "wrap_content"] android:layout_width=["dimension" | "match_parent" | "wrap_content"] [View-specific attributes] > <requestFocus/> </View> <ViewGroup > <View /> </ViewGroup> <include layout="@layout/layout_resource"/> </ViewGroup> Note: The root element can be a ViewGroup, a View, or a <merge> element, but there can be only one root element and it must contain the xmlns:android attribute with the android namespace as shown in the preceding syntax example. elements: <ViewGroup> A container for other View elements. There are many different kinds of ViewGroup objects, and each one lets you specify the layout of the child elements in different ways. Different kinds of ViewGroup objects include LinearLayout, RelativeLayout, and FrameLayout. Don't assume that any derivation of ViewGroup accepts nested views. Some view groups are implementations of the AdapterView class, which determines its children only from an Adapter. Attributes: android:id Resource ID. A unique resource name for the element, which you can use to obtain a reference to the ViewGroup from your application. For more information, see the Value for android:id section. android:layout_height Dimension or keyword. Required. The height for the group, as a dimension value (or dimension resource) or a keyword ("match_parent" or "wrap_content"). For more information, see the Values for android:layout_height and android:layout_width section. android:layout_width Dimension or keyword. Required. The width for the group, as a dimension value (or dimension resource) or a keyword ("match_parent" or "wrap_content"). For more information, see the Values for android:layout_height and android:layout_width section. The ViewGroup base class supports more attributes, and many more are supported by each implementation of ViewGroup. For a reference of all available attributes, see the corresponding reference documentation for the ViewGroup class, for example, the LinearLayout XML attributes. <View> An individual UI component, generally referred to as a widget. Different kinds of View objects include TextView, Button, and CheckBox. Attributes: android:id Resource ID. A unique resource name for the element, which you can use to obtain a reference to the View from your application. For more information, see the Value for android:id section. android:layout_height Dimension or keyword. Required. The height for the element, as a dimension value (or dimension resource) or a keyword ("match_parent" or "wrap_content"). For more information, see the Values for android:layout_height and android:layout_width section. android:layout_width Dimension or keyword. Required. The width for the element, as a dimension value (or dimension resource) or a keyword ("match_parent" or "wrap_content"). For more information, see the Values for android:layout_height and android:layout_width section. The View base class supports more attributes, and many more are supported by each implementation of View. For more information, read Layouts. For a reference of all available attributes, see the corresponding reference documentation, for example, the TextView XML attributes. <requestFocus> Any element representing a 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 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 ViewStub: a lightweight view that consumes no layout space until you explicitly inflate it. When you do, it includes a layout file defined by its android:layout attribute. For more information about using ViewStub, read Load views on demand. <merge> An alternative root element that isn't drawn in the layout hierarchy. Using this as the root element is useful when you know that this layout is 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 ViewGroup container. For more information about merging layouts, read Reuse layouts with <include. Value for android:id For the ID value, you typically use this syntax form: "@+id/name", as shown in the following example. The plus symbol, +, indicates that this is a new resource ID, and the aapt tool creates a new resource integer in the R.java class, if it doesn't already exist. <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: Kotlin val textView: TextView? = findViewById(R.id.nameTextbox) Java TextView textView = findViewById(R.id.nameTextbox); This code returns the TextView object. However, if you have already defined an ID resource, and it isn't already used, then you can apply that ID to a View element by excluding the plus symbol in the android:id value. Values for android:layout_height and android:layout_width The height and width values are expressed using any of the dimension units supported by Android (px, dp, sp, pt, in, mm) or with the following keywords: ValueDescription match_parent Sets the dimension to match that of the parent element. Added in API level 8 to deprecate fill_parent. wrap_content Sets the dimension only to the size required to fit the content of this element. Custom view elements You can create 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. For more information, see Create custom view 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="match_parent" android:layout_height="match_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 loads the layout for an Activity in the onCreate() method: Kotlin public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) } Java public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); } see also: Layouts View ViewGroup Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. Last updated 2026-05-18 UTC. [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2026-05-18 UTC."],[],[]] X Follow @AndroidDev on X YouTube Check out Android Developers on YouTube LinkedIn Connect with the Android Developers community on LinkedIn More Android Android Android for Enterprise Security Source News Blog Podcasts Discover Gaming Machine Learning Health & Fitness Camera & Media Privacy 5G Android Devices Large screens Wear OS ChromeOS devices Android for cars Android TV Releases Android 17 Android 16 Android 15 Android 14 Android 13 Android 12 Android 11 Documentation and Downloads Android Studio guide Developers guides API reference Download Studio Android NDK Support Report platform bug Report documentation bug Google Play support Join research studies Android Chrome Firebase Google Cloud Platform All products Privacy License Brand guidelines Manage cookies Get news and tips by email Subscribe English Deutsch Español – América Latina Français Indonesia Italiano Polski Português – Brasil Tiếng Việt Türkçe Русский עברית العربيّة فارسی हिंदी বাংলা ภาษาไทย 中文 – 简体 中文 – 繁體 日本語 한국어