A Layout is a ViewGroup that defines the structure for a user interface in your application, such as in an activity .
Layouts are normally used as a template or structure to hold other elements. These elements are commonly wigets like button, textview, listview etc.
These elements will make up a hierarchy of views and ViewGroups objects.
The difference between a view and viewgroup is that a view will draw an element the user can interact with while a viewgroup will is just an invisible container for holding other views. Note that ViewGroups can be nested.
So in short a view is a widget while a viewgroup is layout.
Here are examples of Layouts/ViewGroups:
You can declare a layout in two ways:
- (a) Declare UI elements in XML. Android provides a straightforward XML vocabulary that corresponds to the View classes and subclasses, such as those for widgets and layouts.
<?xml version="1.0" encoding="utf-8"?>
android:text="This is a TextView" />
android:text="Hello, I am a Button" />
After you've declared your layout in XML, save the file with the .xml extension, in your Android project's
res/layout/ directory, so it will properly compile.
(b). You can also use Android Studio's Layout Editor to build your XML layout using a drag-and-drop interface.
- Instantiate layout elements at runtime. Your app can create View and ViewGroup objects (and manipulate their properties) programmatically.
All [ViewGroup](/android/viewgroup) (e.g. LinearLayout, [RelativeLayout](/android/relativelayout), CoordinatorLayout, etc.) have to store information
about their children's properties. About the way its children are being laid out in the ViewGroup.
This information is stored in objects of a wrapper class `ViewGroup.LayoutParams`.
To include parameters specific to a particular layout type, the ViewGroups will use subclasses of `ViewGroup.LayoutParams` class.
Here are examples:
1. LinearLayout : `LinearLayout.LayoutParams`
2. RelativeLayout : `RelativeLayout.LayoutParams`
3. CoordinatorLayout : `CoordinatorLayout.LayoutParams` etc.
However most of the ViewGroups reutilize the ability to set margins for their children, such that rather than subclassing `ViewGroup.LayoutParams` directly, they subclass `ViewGroup.MarginLayoutParams` (which itself is a
subclass of` ViewGroup.LayoutParams`).
#### LayoutParams in xml
LayoutParams objects are created based on the inflated layout xml file.
The parameters that begin with `layout_` specify how the enclosing layout should work. When the layout is inflated,
those parameters are wrapped in a proper `LayoutParams` object, that later will be used by the Layout to properly position a particular [View](/android/view) within the [ViewGroup](/android/viewgroup). Other attributes of a View are directly View-related and are
processed by the View itself.
### Top Android Layout Types Examples
Let's look at some examples.
How do You Feel after reading this?
According to scientists, we humans have 8 primary innate emotions:
joy, acceptance, fear, surprise, sadness, disgust, anger, and
Feel free to tell us how you feel about this article using these
emotes or via the comment section.
This feedback helps us gauge our progress.
Help me Grow.
I set myself some growth ambitions I desire to achieve by this year's end regarding this website
and my youtube channel. Am halfway. Help me reach them by: