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

一、线性布局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>




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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值