android学习第二课(布局管理)

来源:互联网 发布:中国体育网络电视台 编辑:程序博客网 时间:2024/06/07 07:05

一、线性布局LinearLayout

1.orientation --表示线性布局的方向,horizontal:水平方向  vertical:垂直方向 2.android:layout_gravity与android:gravity区别

名字上可以看到,android:gravity是对元素本身说的,元素本身的文本显示在什么地方靠着换个属性设置,不过不设置默认是在左侧的。

android:layout_gravity是相对与它的父元素说的,说明元素显示在父元素的什么位置。

比如说button: android:layout_gravity 表示按钮在界面上的位置。 android:gravity表示button上的字在button上的位置。

  
<?xml version="1.0" encoding="utf-8"?><!--线性布局,最外面包裹一个水平线性布局--><!--orientation表示线性布局的方向,horizontal:水平方向  vertical:垂直方向 --><!-- @代表R类,如果是自定义的ID 则用@+id/××× 表示,如果是引用R类的资源则@string/×××--><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:background="@drawable/bg"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    >    <LinearLayout    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="vertical"    ><TextView      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/linear"    /> <Button android:id="@+id/button" android:layout_width="183dp"     android:layout_height="wrap_content"     android:text="@string/button" /> <ImageButton  android:id="@+id/imagebutton" android:layout_width="180dp" android:layout_height="48dp" android:src="@drawable/imagebutton" />  </LinearLayout> <!-- android:layout_gravity与android:gravity区别,拿一个button作为例子   前者的意思,是这个按钮的位置,如果设置为right则表示这个按钮整体位置靠右;   后者的意思,这个按钮上显示内容的位置。  --> <LinearLayout android:gravity="right" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/imageview" android:layout_marginTop="5dp" android:src="@drawable/imageview" android:layout_width="131dp" android:layout_height="131dp" /> </LinearLayout></LinearLayout>


二、表格布局TableLayout

TableLayout特点:         1)TableLayout和我们平时在网页上见到的Table有所不同,TableLayout没有边框的         2)它是由多个TableRow对象组成,每个TableRow可以有0个或多个单元格,每个单元格就是一个View。这些TableRow,单元格不能设置layout_width,宽度默认是fill_parent的,只有高度layout_height可以自定义,默认是wrap_content。         3)单元格可以为empty,并且通过android:layout_column可以设置index值实现跳开某些单元格。在TableRow之间  4)添加View,设置layout_height以及背景色,就可以实现一条间隔线。android:layout_span可以设置合并几个单元格              
<?xml version="1.0" encoding="utf-8"?>    <TableLayout android:id="@+id/tableLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:stretchColumns="*" >        <TableRow android:id="@+id/tableRow0" android:layout_width="wrap_content" android:layout_height="wrap_content">                        <EditText android:digits="1234567890.+-*/=%\n\t()" android:layout_width="fill_parent"android:layout_span="4"        ></EditText>        </TableRow>           <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content">                <Button        android:text="("        android:layout_width="1dip"        ></Button>        <Button        android:text=")"        android:layout_width="1dip"        ></Button>        <Button        android:text="*"        android:layout_width="1dip"        ></Button>        <Button        android:text="back"        android:layout_width="1dip"        ></Button>                </TableRow>        <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content">                <Button        android:text="7"        ></Button>        <Button        android:text="8"        ></Button>        <Button        android:text="9"        ></Button>        <Button        android:text="%"        ></Button>                </TableRow>         <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content">                <Button        android:text="4"        ></Button>        <Button        android:text="5"        ></Button>        <Button        android:text="6"        ></Button>        <Button        android:text="/"        ></Button>                </TableRow>        <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content">                <Button        android:text="1"        ></Button>        <Button        android:text="2"        ></Button>        <Button        android:text="3"        ></Button>        <Button        android:text="-"        ></Button>                </TableRow>         <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content">                <Button        android:text="0"        ></Button>        <Button        android:text="."        ></Button>        <Button        android:text="+"        ></Button>        <Button        android:text="*"        ></Button>                </TableRow>        <!-- 设置tr间的分割线 -->        <View android:layout_height="20dip" android:background="#C4C4C4"></View>            </TableLayout>

三、绝对布局AbsoluteLayout

layout_x:指定布局中子组件的X坐标Lyout_y:指定布局中子组件的Y坐标px(像素)dip/dp:独立设备像素(device independent pixels)主要处理组件的大小宽度sp:主要处理文字大小

<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:layout_x="20dip"android:layout_y="20dip"android:id="@+id/textView1"android:text="用户名:" android:layout_width="wrap_content"android:layout_height="wrap_content" ></TextView><EditText android:layout_x="80dip" android:layout_width="wrap_content"android:id="@+id/editText1" android:text="EditText"android:layout_height="wrap_content" android:width="200px"></EditText><TextView android:layout_x="20dip" android:id="@+id/textView2"android:text="密码:" android:layout_width="wrap_content"android:layout_height="wrap_content" android:layout_y="75dip"></TextView><EditText android:layout_x="80dip" android:layout_width="wrap_content"android:id="@+id/editText2" android:text="EditText"android:layout_height="wrap_content" android:layout_y="75dip" android:width="200px" android:password="true"></EditText><Button android:text="登录" android:layout_x="130dip"android:id="@+id/button1" android:layout_width="wrap_content"android:layout_height="wrap_content" android:layout_y="135dip"></Button></AbsoluteLayout>




四、相对布局RelativeLayout

RelativeLayout.LayoutParams中可以找到大量的属性1.相对于布局的属性:比如说,layout_centerHorizontal 子组件是否位于布局容器的水平居中位置layout_alignParentBottom子组件是否与布局底端对其等等2.相对其他组件属性:比如说,layout_toRightOf 控制该组件位于给定ID的右侧

<?xml version="1.0" encoding="utf-8"?><!-- 相对布局  一个控件相对于另一个控件或者容器的位置。 --><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:background="@drawable/bg"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextView  android:id="@+id/describe_view"     android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/hello"    android:textColor="#556055"    /> <!-- 这个TextView相对于上一个TextView 在 它的下方所以设置属性为layout_below--> <TextView android:id="@+id/username_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="12dp" android:text="@string/username" android:textColor="#556055" android:layout_below="@id/describe_view" /> <EditText android:id="@+id/username_edit" android:layout_width="90dp" android:layout_height="40dp" android:layout_marginTop="4dp" android:layout_toRightOf="@id/username_view" android:layout_below="@id/describe_view" /> <TextView android:id="@+id/sex_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="12dp" android:text="@string/sex" android:textColor="#556055" android:layout_below="@id/describe_view" android:layout_toRightOf="@id/username_edit" /> <RadioGroup android:id="@+id/sex_radiogroup" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/sex_view" android:layout_below="@id/describe_view" >    <!--第一个RadioButton -->    <RadioButton      android:id="@+id/male_radiobutton"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="男"    />    <!--第二个RadioButton -->    <RadioButton      android:id="@+id/woman_radiobutton"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:text="女"    /> </RadioGroup> <TextView android:id="@+id/age_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="25dp" android:text="@string/age" android:textColor="#556055" android:layout_below="@id/username_view" />  <EditText android:id="@+id/brithday_edit" android:layout_width="90dp" android:layout_height="40dp" android:layout_marginTop="4dp" android:hint="@string/selectdate" android:textSize="13sp" android:gravity="center" android:editable="false" android:layout_toRightOf="@id/age_view" android:layout_below="@id/username_edit" />  <TextView android:id="@+id/education_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="25dp" android:text="@string/education" android:textColor="#556055" android:layout_below="@id/sex_view" android:layout_toRightOf="@id/brithday_edit" /> <!-- 下拉列表控件 --> <Spinner android:id="@+id/edu_spinner" android:layout_width="108dp" android:layout_height="38dp" android:layout_below="@id/sex_radiogroup" android:layout_toRightOf="@id/education_view" /> <TextView android:id="@+id/interest_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="25dp" android:text="@string/interest" android:textColor="#556055" android:layout_below="@id/age_view" /> <!-- 复选框控件 --> <CheckBox android:id="@+id/car_check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/car" android:textColor="#566156" android:layout_toRightOf="@id/interest_view" android:layout_below="@id/brithday_edit" /> <CheckBox android:id="@+id/sing_check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="11dp" android:text="@string/sing" android:textColor="#566156" android:layout_toRightOf="@id/car_check" android:layout_below="@id/brithday_edit" /> <CheckBox android:id="@+id/movie_check" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="11dp" android:text="@string/movie" android:textColor="#566156" android:layout_toRightOf="@id/sing_check" android:layout_below="@id/brithday_edit" /> <Button android:id="@+id/submit_button" android:layout_width="100dp" android:layout_height="40dp" android:text="@string/submit" android:gravity="center" android:layout_below="@id/movie_check" android:layout_marginLeft="210dp" android:layout_marginTop="15dp" /></RelativeLayout>


五、框架布局FrameLayout

框架布局,确切的说应该是叫做帧布局,因为子控件均显示在屏幕的左上角,层叠式排列。此布局无法控制子控件的大小与位置

<?xml version="1.0" encoding="utf-8"?><!-- 帧布局,所以子控件均显示在屏幕的左上角,层叠式排列。此布局无法控制子控件的大小与位置,      但是子控件自身可以控制其位置大小 --><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="@drawable/bg"    >    <!-- 图片显示控件 并且在容器的右侧显示 --><ImageView android:id="@+id/one_imageview"android:src="@drawable/one"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="right"/><!-- 第二张图片显示在左侧底部 --><ImageView android:id="@+id/two_imageview"android:src="@drawable/two"android:layout_width="wrap_content"android:layout_height="fill_parent"android:scaleType="fitEnd"/></FrameLayout>




上述代码参考网络上的,仅仅做为参考,代码见附件了.点击下载