مطالب تئوری - بخش 6
آشنایی با Layout Managerها و ViewGroup ها
آدرس مطلب اصلی: http://www.vogella.com/articles/Android/article.html#d830e2107
این مطالب از سایت شخصی Lars Vogel آورده شده است که نمونه مثالها و آموزشهای جالبی را برای یادگیری اندروید در اختیار شما می گذارد.
ادامه مطلب را مشاهده بفرمایید...
Layout Manager and ViewGroups
A layout manager is a subclass of ViewGroup
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
Children can specify there desired width and height via the following attributes.
Table 5. Width and height definition
Attribute | Description |
---|---|
android:layout_width | defines the width of the widget |
android:layout_height | defines the height of the widget |
Widgets can uses fixed sizes, e.g. with the
dp
definition, for example 100dp
.
While dp is a fixed size it will scale with different device configurations.
The match_parent
value tells the
to maximize the widget in its parent. The
wrap_content
value tells the layout to allocate the minimum
amount so that widget is rendered correctly.
FrameLayout
is a layout manager which draws all
child elements on top of each other. Which allows to create nice visual
effects.
The following screenshot shows the Gmail application which uses
FrameLayout
to display several button on top of
another layout.
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.
If horizontal is used the child elements are layouted as indicated by the following picture.
Vertial would result in a layout as depicted in the following picture.
LinearLayout
can be nested to achieve more
complex layouts.
LinearLayout
supports assigning a weight to
individual children via the
android:layout_weight
layout parameter. This value specifies how
much of the extra space in the layout is allocated to the
View
. If for example you have two widgets and the first one defines a
layout_weight
of 1 and the second of
2, the first will get 1/3 of the available space and the other one 2/3. You
can also set the layout_width to zero to have always a certain ratio.
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 following layout file defines a layout using
GridLayout
.
<?xml version="1.0" encoding="utf-8"?> <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/GridLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:columnCount="4" android:useDefaultMargins="true" > <TextView android:layout_column="0" android:layout_columnSpan="3" android:layout_gravity="center_horizontal" android:layout_marginTop="40dp" android:layout_row="0" android:text="User Credentials" android:textSize="32dip" /> <TextView android:layout_column="0" android:layout_gravity="right" android:layout_row="1" android:text="User Name: " > </TextView> <EditText android:id="@+id/input1" android:layout_column="1" android:layout_columnSpan="2" android:layout_row="1" android:ems="10" /> <TextView android:layout_column="0" android:layout_gravity="right" android:layout_row="2" android:text="Password: " > </TextView> <EditText android:id="@+id/input1" android:layout_column="1" android:layout_columnSpan="2" android:layout_row="2" android:ems="8" /> <Button android:id="@+id/button1" android:layout_column="2" android:layout_row="3" android:text="Login" /> </GridLayout>
This creates a user interface similar to the following screenshot.
The
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.
The following code shows an example layout file which uses a
ScrollView
.
<?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" > <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> </ScrollView>
The
android:fillViewport="true"
attribute ensures that the
scrollview is set to the full screen even
if the elements are smaller
then one
screen.
- ۹۲/۰۳/۱۴
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.