Available Layout Manager
A layout manager is a subclass ofViewGroup
and is responsible for the layout of itself and its child
Views
. Android supports different default
layout
managers.
As of Android 4.0 the most relevant layout managers are
LinearLayout
,
FrameLayout
,
RelativeLayout
and
GridLayout
.
All layouts allow the developer to define attributes. Children can also define attributes which may be evaluated by their parent layout.
AbsoluteLayoutLayout
is deprecated and
TableLayout
can be implemented more effectively via
GridLayout
LinearLayout
puts all its child elements into a single column or row depending on
the
android:orientation
attribute. Possible values for this attribute are
horizontal
and
vertical
,
horizontal
is the default value.
LinearLayout
can be nested to achieve more complex layouts.
RelativeLayout
allow to position the widget relative to each other. This allows for
complex layouts.
A simple usage for
RelativeLayout
is if you want to center a single component. Just add one component
to the
RelativeLayout
and set the
android:layout_centerInParent
attribute to true.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </RelativeLayout>
GridLayout
was introduced with Android 4.0. This layout allows you to organize a
view into a Grid. GridLayout
separates its drawing area into: rows,
columns, and cells.
You can specify how many columns you want for define for each
View
in which row and column it should be placed and how many columns and
rows it should use. If not specified
GridLayout
uses defaults, e.g. one column, one row and the position of
a
View
depends on the order of the declaration of the
Views
.
The
Of course this
The attribute "android:fillViewport="true"" ensures that the scrollview is set to the full screen even if the elements are smaller then one screen and the "layout_weight" tell the android system that these elements should be extended.
ScrollView
class
can be used to contain one
View
that might be to big too fit on one screen.
ScrollView
will is this
case display a scroll bar to scroll the context.
Of course this
View
can be a layout which can then contain other
elements.** Tutorial: ScrollView
Create an android project "de.vogella.android.scrollview" with the activity "ScrollView". Create the following layout and class.<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:orientation="vertical" > <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="8dip" android:paddingRight="8dip" android:paddingTop="8dip" android:text="This is a header" android:textAppearance="?android:attr/textAppearanceLarge" > </TextView> <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1.0" android:text="@+id/TextView02" > </TextView> <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:text="Submit" > </Button> <Button android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:text="Cancel" > </Button> </LinearLayout> </LinearLayout> </ScrollView>
package de.vogella.android.scrollview; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class ScrollView extends Activity {/** Called when the activity is first created. */@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView view = (TextView) findViewById(R.id.TextView02); String s=""; for (int i=0; i < 100; i++) { s += "vogella.com "; } view.setText(s); } }
The attribute "android:fillViewport="true"" ensures that the scrollview is set to the full screen even if the elements are smaller then one screen and the "layout_weight" tell the android system that these elements should be extended.
(vogella.com)