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 anticipation. 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: