As if a device can function if it
has no style. As if a device can
be called stylish that does not
function superbly.... Yes,
beauty matters. Boy, does it
matter. It is not surface, it is not
an extra, it is the thing itself.
—STEPHEN FRY, THE GUARDIAN
(OCTOBER 27, 2007)
All user interface elements in an Android app
are built using View and ViewGroup objects.
A View is an object that draws something on
the screen that the user can interact with.
A ViewGroup is an object that holds other
View (and ViewGroup) objects in order to
define the layout of the interface.
The user interface for each component of
your app is defined using a hierarchy of View
and ViewGroup objects.
hierarchy tree can be as simple or
complex as you need it to be.
A layout defines the visual structure for a user
interface, such as the UI for an activity or app
You can declare a layout in two ways:
Declare UI elements in XML.
Instantiate layout elements at runtime
The Android framework gives you the flexibility
to use either or both .
The advantage to declaring your UI in XML is
that it enables you to better separate the
presentation from the code that controls its
Using Eclipse to Design Layout
the Outline pane to Add and Remove
controls to your layout resource.
Select a specific control (either in the
Preview or the Outline) and use the
Property pane to adjust a specific
Use the XML tab to edit the XML definition
Write the XML
layout file must contain exactly one
XML vocabulary for declaring UI elements
closely follows the structure and naming
of the classes and methods.
For example, the EditText element has a
text attribute that corresponds to
Every View and ViewGroup object supports
their own variety of XML attributes.
Some attributes are specific (e.g. TextView
supports the textSize attribute)
These attributes are also inherited by any
View objects that may extend this class.
Some are common to all View
objects, because they are inherited from the
root View class (like the id attribute).
ID (Any View object may have an integer ID
associated with it, to uniquely identify the
View within the tree.)
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
The plus-symbol (+) means that this is a new
resource name that must be created and added to
our resources (in the R.java file)
android:id="@android:id/empty” (from android.R)
View in xml
Create the same view in code
If I Instantiate view at runtime how I can
assign ID to it ?
Layout Parameters (XML layout attributes
named layout_something )
for the View that are appropriate for the
ViewGroup in which it resides.
All view groups include a width and height
(layout_width and layout_height), and each
view is required to define them.
wrap_content tells your view to size itself to the
dimensions required by its content
fill_parent (renamed match_parent in API Level
8) tells your view to become as big as its parent
view group will allow.
Every LayoutParams subclass has its own
syntax for setting values. Each child element
must define LayoutParams that are
appropriate for its parent, though it may also
define different LayoutParams for its own
Note (not Galaxy Note)
a layout width and height using
absolute units such as pixels is not
recommended. Instead, using relative
measurements such as densityindependent pixel units (dp),
wrap_content, or fill_parent, is a better
approach, because it helps ensure that
your application will display properly
across a variety of device screen sizes.
XML layout that uses a vertical
LinearLayout to hold a TextView and a
id = text
Text= “Hello, I am a TextView”
text="Hello, I am a Button"
Padding and Margins
The accepted measurement types:
Px, dp(Density-independent Pixels), sp(Scaleindependent Pixels), pt, in, mm.
We can define it in Dimension Values.
you can nest one or more
layouts within another layout to achieve
your UI design, you should strive to keep
your layout hierarchy as shallow as
Your layout draws faster if it has fewer
nested layouts (a wide view hierarchy is
better than a deep view hierarchy).Why?
you can see, the code can rapidly
grow in size as more controls are added
to the screen, making screen contents
more difficult to maintain or reuse.
designed to display a stack of child View
This can be used to show multiple controls
within the same screen space
designed to display child View controls in a
single row or column.(Orientation= vertically
This is a very handy layout method for
create a linear layout in which each
child uses the same amount of space on
set the android:layout_height of each
view to "0dp" (for a vertical layout)
or the android:layout_width of each view
to "0dp" (for a horizontal layout).
Then set the android:layout_weight of
each view to "1".
if there are three text fields and two of them
declare a weight of 1, while the other is given
no weight, the third text field without weight
will not grow and will only occupy the area
required by its content. The other two will
expand equally to fill the space remaining
after all three fields are measured.
If the third field is then given a weight of 2
(instead of 0), then it is now declared more
important than both the others, so it gets half
the total remaining space, while the first two
share the rest equally.
designed to display child View controls in
relation to each other.
You can also align child View controls
relative to the parent edges.
Is a very powerful utility for designing a user
interface because it can eliminate nested
view groups and keep your layout hierarchy
flat, which improves performance.
If "true", makes the top edge of this view match the
top edge of the parent.
If "true", centers this child vertically within its parent.
Positions the top edge of this view below the view
specified with a resource ID.
Positions the left edge of this view to the right of the
view specified with a resource ID.