Udemy logo

androidlinearlayoutIf you want to know more about Android applications and various designs, you first need to understand screen layouts. A layout explains a user interface’s visual structure, whether it’s for a widget or an activity. A layout can be declared by either declaring the elements of the user interface in XML or representing elements of the layout during runtime. Android developers prefer to use layouts since the framework provides them with the freedom to use either one or both of the methods for managing the user interface of the applications. This allows an individual to declare the default layout of the application in XML and also add codes to vary the screen objects at run-time. Linear layouts are very efficient when it comes to organizing the controls of the user interface and widgets. It performs as the core for many useful user interface applications.

Learn more about LinearLayouts and Android programming at Udemy.com.

What is a Linear Layout?

Before we go any further, understanding what a linear layout means is very important. These layouts are used mostly by Android developers to tweak user interfaces. It is used frequently, simply because of its simplicity. As the name suggests, it classifies the controls in a linear fashion, whether it’s horizontal or vertical. For example, when the layout defines a vertical orientation, the child controls used within are all positioned in a single column and when it’s set horizontally, child controls are positioned in a single row. Basically, a layout that positions its children in a single row or column is known as a linear layout. You can set the orientation by using setOrientation () and to specify the child elements alignment, you can call setGravity().If orientation is not defined, horizontal is set by default.

Types of Linear Layouts

As the name states, the elements appearing in a linear layout are displayed in a linear manner, whether it’s vertical or horizontal. You can set the behavior by using:

<LinearLayoutandroid:orientation=”vertical”>….</LinearLayout> (for vertical)

<LinearLayoutandroid:orientation=”horizontal”>….</LinearLayout> (for horizontal)

What is LinearLayoutParams?

Layout Params mainly tells the application’s parent view about how it will be adjusted on the screen. The basic LayoutParams class defines the view’s height and width i.e. about how much the layout should cover the screen. These dimensions are separated every time we use the layout. One important factor to remember in nesting linear layout is that the parent element cannot exceed nested layout dimension.

They are two LayoutParams used in linear layout:

Margin layout params perform spacing with respect to the view from the layout boundaries. It generally separates the views from getting overlapped. A simple approach is to keep the views within the layout more presentable. Some fields are:

LayoutParams are used for linear layout as a whole and not for particular views inside it. It describes the area of the layout as a whole that will cover the screen. The parameters are:

What is Layout Weight?

Layout weight is one of the attributes used by linear layout to specify the “weightage” of the views. Weightage means to distribute the available space in the parent view. It gives functionality to distribute the views throughout the android screen based on the specified weightage. Android initially calculates the total proportion of all the views as specified, on basis of the given weightage and then places each view on the screen accordingly. By default, every view has a weight of 0 which means that there would be single view that would cover the entire screen space.

Syntax:

<View

android:layout _weight=”1”

/>

What is Layout Gravity?

Layout gravity is one of the attributes for a linear layout that helps place view objects.

The gravity attribute aligns the user interface elements in linear layout. It works in both horizontal and vertical orientation. Its main functionality is in the view group and it controls the way the contents of the view group will be positioned either horizontally or vertically.

Want to learn more about Android programming? Take a course at Udemy.com.

For horizontal orientation of Linear Layout it has values:

For vertical orientation of Linear Layout:

Syntax:

<View

android:layout_gravity:”value”

>

What is a Relative Layout?

Relative layout helps you place the view objects on the screen relative to other controls. The view’s position is specified relative to other view objects rather than being laid out linearly.

<RelativeLayout>….</RelativeLayout>

Comparison of Linear Layout with other layouts

Linear Layout Vertical Example:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vertical1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vertical2"
android:layout_weight="2"/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Vertical3"
android:layout_weight="1"/>
</LinearLayout>
Linear Layout Horizontal Example:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Horizontal1"
/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Horizn2"
/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gra_Center"
android:layout_gravity="center"
android:layout_weight="0"
/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bottom"
android:layout_gravity="bottom"/>
</LinearLayout>

When it comes to vertical layouts, the buttons are stacked vertically, i.e. one below the other. This particular example sets the orientation in a vertical manner and therefore, all the children elements are stacked vertically.

When it comes to horizontal layouts, the buttons are stacked vertically, i.e. one next to the other. This particular example sets the orientation in a horizontal manner and therefore, all the children elements are stacked horizontally.

In this particular case, the “fill_parent” in android:layout_height=”fill_parent” can be replaced with either “match parent” or “wrap content”. For instance, if you use “fill parent” it covers the entire screen. When you use “wrap content”, it covers the screen only up to the point assigned to the children elements. If button 1 is assigned with 20% and 2 takes 20% with 3 taking up 30%, only 70% of the screen is covered.

In addition, both the vertical and horizontal layouts can be used as compounded layouts, as linear layouts can hold any number of layouts within them. In fact, those layouts within the linear layouts can hold other layouts inside them with a single child element as the final result. To see more examples of vertical layouts, you can see the “home” page of most of the websites. For example, as you log in to Facebook, you see many elements like “news feed”, “messages” and “events” stacked one below the other on the left hand side of the page and this is based on vertical layouts.

Become an expert in Android development with a course at Udemy.com

Page Last Updated: April 2014

Top courses in Android Development

Android Architecture Masterclass
Vasiliy Zukanov
4.7 (1,222)
The Complete Android 12 & Kotlin Development Masterclass
Denis Panjuta, Tutorials.eu by Denis Panjuta
4.5 (9,131)
Bestseller
Android Jetpack masterclass in Java
Catalin Stefan
4.8 (408)
Android 12 Jetpack Compose Developer Course - From 0 To Hero
Denis Panjuta, Tutorials.eu by Denis Panjuta
4.4 (275)
Dependency Injection in Android with Dagger 2 and Hilt
Vasiliy Zukanov
4.9 (1,977)
Bestseller
The Comprehensive Android App Development Masterclass
Paulo Dichone | Software Engineer, AWS Cloud Practitioner & Instructor
4.5 (3,569)

More Android Development Courses

Android Development students also learn

Empower your team. Lead the industry.

Get a subscription to a library of online courses and digital learning tools for your organization with Udemy Business.

Request a demo