A Quick Guide to Android Layout UI
User interface is always an important and most effective decision maker in the popularity of the software. In Android when the developer is developing the application , the most common problem he/she faces is the UI handling and their related attribute settings. In this short and concise tutorial we have tried to arrange the most important Android Layout UI related aspects for the developers and designers.
What is View
The basic building block for user interface is a View object which is created from the View class and occupies a rectangular area on the screen and is responsible for drawing and event handling. View is the base class for widgets, which are used to create interactive UI components like buttons, text fields e.t.c.
What is ViewGroup
The ViewGroup is a subclass of View and provides invisible container that hold other Views or other ViewGroups and define their layout properties.
Difference between View and ViewGroup
View | ViewGroup |
View objects are the basic building blocks of User Interface(UI) elements in Android. |
ViewGroup is the invisible container. It holds View and ViewGroup |
View is a simple rectangle box which responds to the user’s actions. |
|
Examples are EditText , Button , CheckBox etc. |
or example, LinearLayout is the ViewGroup that contains Button(View), and other Layouts also. |
View refers to the android.view.View class, which is the base class of all UI classes. |
viewGroup is the base class for Layouts. |

A look at Android View and ViewGroup
A Quick look at Android Layout Types
There are number of Layouts provided by Android which you will use in almost all the Android applications to provide different view, look and feel.
Layout | Description |
---|---|
Linear Layout | LinearLayout is a view group that aligns all children in a single direction, vertically or horizontally. |
Relative Layout | RelativeLayout is a view group that displays child views in relative positions. |
Table Layout | TableLayout is a view that groups views into rows and columns. |
Absolute Layout | AbsoluteLayout enables you to specify the exact location of its children. |
Frame Layout | The FrameLayout is a placeholder on screen that you can use to display a single view. |
List View | ListView is a view group that displays a list of scroll-able items. |
Grid View | GridView is a ViewGroup that displays items in a two-dimensional, scrollable grid. |
Android View Layout Attributes
Each layout has a set of attributes which define the visual properties of that layout. There are few common attributes among all the layouts and their are other attributes which are specific to that layout. Following are common attributes and will be applied to all the layouts:
Attribute | Description |
---|---|
android:id | This is the ID which uniquely identifies the view. |
android:layout_width | This is the width of the layout. |
android:layout_height | This is the height of the layout |
android:layout_marginTop | This is the extra space on the top side of the layout. |
android:layout_marginBottom | This is the extra space on the bottom side of the layout. |
android:layout_marginLeft | This is the extra space on the left side of the layout. |
android:layout_marginRight | This is the extra space on the right side of the layout. |
android:layout_gravity | This specifies how child Views are positioned. |
android:layout_weight | This specifies how much of the extra space in the layout should be allocated to the View. |
android:layout_x | This specifies the x-coordinate of the layout. |
android:layout_y | This specifies the y-coordinate of the layout. |
android:layout_width | This is the width of the layout. |
android:layout_width | This is the width of the layout. |
android:paddingLeft | This is the left padding filled for the layout. |
android:paddingRight | This is the right padding filled for the layout. |
android:paddingTop | This is the top padding filled for the layout. |
android:paddingBottom | This is the bottom padding filled for the layout. |
Here width and height are the dimension of the layout/view which can be specified in terms of
- dp (Density-independent Pixels),
- sp ( Scale-independent Pixels),
- pt ( Points which is 1/72 of an inch), px( Pixels), mm ( Millimeters) and finally in (inches).
You can specify width and height with exact measurements but more often, you will use one of these constants to set the width or height .
- android:layout_width=wrap_content tells your view to size itself to the dimensions required by its content.
- android:layout_width=fill_parent tells your view to become as big as its parent view.
Gravity Attribute and its constants
Gravity attribute plays important role in positioning the view object and it can take one or more (separated by ‘|’) of the following constant values.
Constant | Value | Description |
---|---|---|
top | 0x30 | Push object to the top of its container, not changing its size. |
bottom | 0x50 | Push object to the bottom of its container, not changing its size. |
left | 0x03 | Push object to the left of its container, not changing its size. |
right | 0x05 | Push object to the right of its container, not changing its size. |
center_vertical | 0x10 | Place object in the vertical center of its container, not changing its size. |
fill_vertical | 0x70 | Grow the vertical size of the object if needed so it completely fills its container. |
center_horizontal | 0x01 | Place object in the horizontal center of its container, not changing its size. |
fill_horizontal | 0x07 | Grow the horizontal size of the object if needed so it completely fills its container. |
center | 0x11 | Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. |
fill | 0x77 | Grow the horizontal and vertical size of the object if needed so it completely fills its container. |
clip_vertical | 0x80 | Additional option that can be set to have the top and/or bottom edges of the child clipped to its container’s bounds. The clip will be based on the vertical gravity: a top gravity will clip the bottom edge, a bottom gravity will clip the top edge, and neither will clip both edges. |
clip_horizontal | 0x08 | Additional option that can be set to have the left and/or right edges of the child clipped to its container’s bounds. The clip will be based on the horizontal gravity: a left gravity will clip the right edge, a right gravity will clip the left edge, and neither will clip both edges. |
start | 0x00800003 | Push object to the beginning of its container, not changing its size. |
end | 0x00800005 | Push object to the end of its container, not changing its size. |
How to identify Android View
A view object may have a unique ID assigned to it which will identify the View uniquely within the tree. The syntax for an ID, inside an XML tag is
android:id="@+id/my_button"
Following is a brief description of @ and + signs –
- @ Symbol
The at-symbol (@) at the beginning of the string indicates that the XML parser should parse and expand the rest of the ID string and identify it as an ID resource.
- + Symbol
The plus-symbol (+) means that this is a new resource name that must be created and added to our resources. To create an instance of the view object and capture it from the layout, use the following
Button myButton = (Button) findViewById(R.id.my_button);