现在的位置: 首页 > 综合 > 正文

LinearLayout、FrameLayout、RelativeLayout、TableLayout、LayoutInflater类、LayoutParams类

2013年08月09日 ⁄ 综合 ⁄ 共 3759字 ⁄ 字号 评论关闭

今天花了不少时间在这4个View上面,但是重点并不是使用这几个View的结构有多难理解(毕竟照葫芦画瓢,谁都懂得做出来),而是理解这些View是如何显示出来,View与AndroidManifest.xml、R.java、和layout目录的xml之间的关系,它们是如何联系起来运行的,浪费了挺多时间来思考和适应。

先来整理一下我的思路:

       4个文件分别为AndroidManifest.xml、Activity(src目录里的java文件)、R.java、layout目录中的xml文件。

       1. 先由R.java谈起,R.java自动生成了layout目录下xml文件的ID,这些ID是为了方便系统调用。

       2. Activity(java文件)只是简单地用了setContentView(R.layout.(xml文件))方法,把该xml的所有UI效果赋予了Activity(Java文件)[原来我就是这里转不过来,原来指定的是这个xml文件的id,这就等于是间接的调用了这个xml文件,现在明白了]。

       3. 在AndroidManifest.xml中使用activity标签的android:name属性来指定了这个Activity(java文件)的路径(是哪个activity),也是为了方便调用这个View。

 

> 所以有关系

         Activity(Java文件)调用xml文件组建UI,然后AndroidManifest.xml调用Activity(Java文件)运行程序,显示在用户屏幕上。

 

总结今天所得:

一、4个布局类各自的特点。

二、4个布局类各自Xml代码特点。

三、LayoutInflater类。

四、LayoutParams类,生成对象的参数。

五、新认识的Activity对象的两个方法,addview()。

 

一、各自的特点:

       > LinearLayout:该布局类将自己包含的子元素(组件)按照一个方向进行排行。通过Android:orientation属性控制所有子元素(组件)水平或竖直方向进行排列。

       > FrameLayout:无法确定元素(组件)的位置,如果里面有多个元素(组件),豁免的元素将重叠在前一个元素上。

       > RelativeLayout:是一个相对布局类,如果一个可视化组件B依赖于A,那么必须要让A出现在B的前面。

       > TableLayout:表格布局类。

 

二、Xml代码特点:

       <!--*************************************************LinearLayout布局***************************************************-->

 

       <LinearLayout android:orientation="vertical">

       </LinearLayout>

 

       <!--*************************************************LinearLayout布局End************************************************-->

 

       <!--*************************************************RelativeLayout布局***************************************************-->

 

       <RelativeLayout

              android:layout_width="fill_parent" android:layout_height="wrap_content">

 

              <!—子元素(组件)可设属性:

                            Android:padding = “*px”

                            Android:margin = “*px”

                            Android:layout_below = “@id/label” :将当前组件放置于ID为label组件的下方。

                            Android:layout_alignParentRight = “true” :与父容器的右边齐平。

                            Android:layout_marginLeft = “*dip” :设置左边距为*dip。

                            Android:layout_toLeftOf = “@id/cancel” :设置此组件的ID为cancel组件的左边。

                            Android:layout_alignTop = “@id/cancel” :设置此组件和ID为cancel组件高度齐平。

              -->

       </RelativeLayout>

 

       <!--*************************************************RelativeLayout布局end*******************************************-->

 

       <!--*************************************************TableLayout布局***************************************************-->

 

       <TableLayout

              android:layout_width="fill_parent" android:layout_height="fill_parent"

              android:stretchColumns="1">

 

              <TableRow android:gravity="right">

              </TableRow>

 

              <!—TableRow标签定义了表格布局里边的一行。每一行里边可以自由加入一些组件,如按钮和文本框等-->

       </TableLayout>

 

       <!--*************************************************TableLayout布局end***********************************************-->

 

三、LayoutInflater类:

       初识LayoutInflater类,该类只能使用getSystemService(Content.LAYOUT_INFLATER_SERVICE)获得LayoutInflater对象,该对象可以对XML的布局文件进行解析,并生成View。调用inflate(R.layout.(xml文件ID)),生成View。

 

四、还有个LayoutParams类,生成对象的参数。

//*************************************************************************************************************************************

       //Java代码

       RelativeLayout.LayoutParams relParam = new RelativeLayout.LayoutParams(

              RelativeLayout.LayoutParams.WRAP_CONTENT,

              RelativeLayout.LayoutParams.WRAP_CONTENT);

              //生成布局对象的参数

//*************************************************************************************************************************************

 

五、新认识的Activity对象的两个方法:

       addView(新的布局对象,高度,宽度) //在布局对象中加入新的布局对象,并指定高度和宽度。

       addView(新的布局对象,LayoutParams对象) //在布局对象中加入新的布局对象,并设置布局对象的参数

 

 

       写完总结还真是累啊,不知不觉写了那么久,今天总结的格式比较乱,原因是已经快#_#了!

抱歉!评论已关闭.