LinearLayout简介:
LinearLayout是Android中最常用的布局组件之一, 它将自己包含的子元素按照一个方向进行排列:方向包括水平排列和竖直排列2种; 方向的设置通过:
android:orientation=”vertical” 竖直; android:orientation=”horizontal”水平
javacode:
---------------------------------------------------------------------------------------------------------------------------------
layoutMain.setOrientation(LinearLayout.HORIZONTAL);//设置为竖直方向;
setContentView(layoutMain);//将layoutMain和此Activity进行关联;
---------------------------------------------------------------------------------------------------------------------------------
FrameLayout简介:
一个FrameLayout好比屏幕上提前预定的空白区域;然后可以填一些元素到里面,比方说一张图片;需要注意的是,所有的元素都被放置在FrameLayout区域最左上的区域;而无法为这些元素指定一个确切的位置;如果一个FrameLayout里面里有多个子元素,后面的子元素的显示会重叠在前一个元素上;
RelativeLayout简介:
相对布局类,即首先RelativeLayout是一个容器,它里面的元素,如Button等按钮的位置是按照相对位置来计算的;eg:有两个Button按钮都布局在一个relativeLayout里面,我们可以定义第二个Button在第一个Button的上面或者右面;但是第二个button所在的位置,依赖于第一个Button的位置。需要注意的是,出于性能的考虑,对于相对布局的精确位置的计算只会执行一次,如果,一个可视化组件B依赖于A,必须要让A出现在B的前面;
说明:
a. android:id定义组件的id;
b. android:layout_width定义组件的宽度,layout_height,定义组件的高度;目前学过的属性值”wrap_content”(仅仅包裹住内容)和”fill_parent”(填充父容器);
c. android:layout_background 定义组件的背景图片;
d. android:padding=”10dip”,dip的意思是依赖于设备的像素。是描述区域大小的一种单位。类似HTML中的padding;
e. android:layout_blow=”@id/label” 相对布局;
f. android:layout_alignParentRight=”true”,和父容器的右边平齐,相对布局;
g. android:layout_magginLeft=”10dip”,设置组件的左边距为10dips;
h. android:layout_toLeftOf=”@id/cancel”,设置组件在id=Cancel组件的左边;
i. android:layout_alignTop=”@id/cancel”,设置此组件和id=Cancel的组件的高度平齐;
Android支持的描述大小区域的类型:
px:像素 dip:依赖于设备的像素 sp:带比例的像素 pt:点 in:英尺mm:毫米;
RelativeLayout和LinearLayout结合使用
javacode:
--------------------------------------------------------------------------------------------------------------------------
LinearLayout layoutMain = new LinearLayout(this);
layoutMain.setOrientation(LinearLayout.HORIZONTAL);
setContentView(layoutMain); //上下文里创建LinearLayout,设置上下排列并和当前Activity关联;
LayoutInflater inflate=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);//LayoutInflater可以对XML的布局文件进行解析,并生成一个View;
RelativeLayout layoutLeft = inflate.inflate(R.layout.left,null);
//调用inflate方法解析left.xml
RelativeLayout layoutRight = inflate.inflate(R.layout.right,null);
RelativeLayout.LayoutParams relParam = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,~); //生成一个RelativeLayout适用的LayoutParams;
layoutMain.addView(layoutLeft,100,100); //第二个参数是height,第三个参数是width;
layoutMain.addView(layoutRight,relParam);//layoutRightà到layoutMain中
--------------------------------------------------------------------------------------------------------------------------
LayoutParams:屏幕上一个区域是由一个Layout占领的,如果想把一个View加入到这个区域中去,要么开发者告诉这个Layout所需的宽高方向等信息;要么Layout按照默认的值进行处理;而这些相关的信息都封装在LayoutParams中;
所有的LayoutParams都是继承Android.view.ViewGroup.LayoutParams;其中,如果
layoutMain.addView(layoutLeft,100,100);100是固定的值;
如果FILL_PARAENT;意味着View和父容器一样大;
如果WRAP_CONTENT:意味着View的大小只需要包裹住View里面的内容即可;
LayoutInflater:
用来将一个XML的布局文件变成一个View的类,这个过程应该是在应用的构建过程来完成,例如在Activity的onCreate方法中使用,代码如下:
LayoutInflater inflate = (LayoutInflater)getSystemService(context.LAYOUT_INFLATER_SERVICE);
LinearLayout layout=(LinearLayout)inflate.inflate(R.layout.a,null);
一个LayoutInflater需要从getSytemService方法中获取,而不能直接实例化。这个类负责将一个xml的布局文件实例化,而在代码中可以应用xml定义的组件;
TableLayout:
一种表格式的布局,这种布局会把包含的元素以行和列的形式进行排列,表格的列数为每一行的最大列数,表格里的单元格可以为空;