Android Layouts

| Page Views: 189

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:

  1. RelativeLayout.
  2. LinearLayout.
  3. ConstraintLayout.
  4. FramewLayout.
  5. CordinatorLayout.

Android Layouts

Layout Declaration

You can declare a layout in two ways:

  1. (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"?>
<LinearLayout xmlns:android=""
              android:orientation="vertical" >
    <TextView android:id="@+id/myTextView"
              android:text="This is a TextView" />
    <Button android:id="@+id/myButton"
            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.

  1. Instantiate layout elements at runtime. Your app can create View and ViewGroup objects (and manipulate their properties) programmatically. #### LayoutParams 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. ```xml ``` 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.

    About Me.

    After completing his Software Engineering bachelors program, Oclemy(Clement Ochieng) these days is a man of two lives. At day he works for a startup in Nairobi, Kenya. At night he works tirelessly on building ProgrammingWizards TV, a tv channel for student coders and this website to help share the source code. In between he practices Meditation and Self actualization to help him keep balance. He also likes going for long solo walks to connect more with nature.


What do You Think

Previous Post Next Post