android几种布局
LinearLayout
orientation:指定控件的方向,分别有horizontal(水平),vertical(垂直),在代码里可通过setOrientation()进行动态改变,值分别为HORIZONTAL或者VERTICAL
fillmodel:可分别使用android:layout_width和android:layout_height来指定宽度和高度。在指定宽度和高度时,可指定尺寸,如125px,也可以使用“wrap_content”使控件根据内容来自适应或者可以使用“fill_parent”占满该控件所在容器的所有空间。
Weight:对应的设置为android:layout_weight。layout_weight用于给一个线性布局中的诸多视图的重要度赋值。所有的视图都有一个layout_weight值,默认为零,意思是需要显示多大的视图就占据多大的屏幕空间。若赋一个高于零的值,则将父视图中的可用空间分割,分割大小具体取决于每一个视图的layout_weight值以及该值在当前屏幕布局的整体layout_weight值和在其它视图屏幕布局的layout_weight值中所占的比率而定。举个例子:比如说我们在水平方向上有一个文本标签和两个文本编辑元素。该文本标签并无指定layout_weight值,所以它将占据需要提供的最少空间。如果两个文本编辑元素每一个的layout_weight值都设置为1,则两者平分在父视图布局剩余的宽度(因为我们声明这两者的重要度相等)。如果两个文本编辑元素其中第一个的layout_weight值设置为1,而第二个的设置为2,则剩余空间的三分之二分给第一个,三分之一分给第二个(数值越小,重要度越高)。但是对于LinearLayout之间则以反比的形式显示在屏幕上(即数值越小,重要度越小)
Gravity:各个控件默认是left-andtop-aligned的,但可通过对应的xml属性android:layout_gravity重新设置(在代码中可通过setGravity()进行设置)
Padding:为边距,可通过android:padding属性进行设置,4个方向的边距属性为android:paddingLeft,android:paddingRight,android:paddingTop,andandroid:paddingBottom.
以下为一个简单的演示:
先建一个Android功能,在main.xml中录入如下内容:
Activity内容如下:
Java代码
1.packagecom.cenphoenix.demo.linelayout;
2.
3.importandroid.app.Activity;
4.importandroid.os.Bundle;
5.importandroid.view.Gravity;
6.importandroid.widget.LinearLayout;
7.importandroid.widget.RadioGroup;
8.
9.publicclassLineLayoutextendsActivityimplements
10.RadioGroup.OnCheckedChangeListener{
11./**Calledwhentheactivityisfirstcreated.*/
12.
13.RadioGrouporientation;
14.RadioGroupgravity;
15.
16.@Override
17.publicvoidonCreate(Bundleicicle){
18.super.onCreate(icicle);
19.setContentView(R.layout.main);
20.orientation=(RadioGroup)findViewById(R.id.orientation);
21.orientation.setOnCheckedChangeListener(this);
22.
23.gravity=(RadioGroup)findViewById(R.id.gravity);
24.gravity.setOnCheckedChangeListener(this);
25.}
26.
27.publicvoidonCheckedChanged(RadioGroupgroup,intcheckedId){
28.if(group==orientation){
29.if(checkedId==R.id.horizontal){
30.orientation.setOrientation(LinearLayout.HORIZONTAL);//水平
31.}else{
32.orientation.setOrientation(LinearLayout.VERTICAL);//垂直
33.}
34.}elseif(group==gravity){
35.if(checkedId==R.id.left){
36.gravity.setGravity(Gravity.LEFT);//点击时该组组件居左
37.}elseif(checkedId==R.id.center){
38.gravity.setGravity(Gravity.CENTER);//center_horizontal点击时该组组件居中
39.}elseif(checkedId==R.id.right){
40.gravity.setGravity(Gravity.RIGHT);//right点击时该组组件居右
41.}
42.}
43.}
44.}
AbsoluteLayout
这是一个按照绝对坐标定义的布局,由于使用绝对坐标去定位控件,因此要实现自适应界面时,应尽少使用AbsoluteLayout。AbsoluteLayout里面的控件都以layout_x、layout_y来定义其位置:
上图中的TextView01的X坐标为10px,Y坐标为10px:
RelativeLayout
RelativeLayout是一个按照相对位置排列的布局,跟AbsoluteLayout这个绝对坐标布局是个相反的理解。
在RelativeLayout布局里的控件包含丰富的排列属性:
Layoutabove:选择IDA,则该控件在A控件的上方,Layoutbelow、Layouttoleft等同样用法。使用RelativeLayout布局的时候,最好在界面设计时做好布局,尽少程序运行时做控件布局的更改,因为RelativeLayout布局里面的属性之间,很容易冲突,例如,Layoutbelow、Layoutabove同选IDA,那就肯定发生冲突了。
FrameLayout
FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象—比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。其中关键的是layout_gravity,负责控制控件的位置。
我们看一下效果图:
其中Main.xml代码如下:
TableLayout
TableLayout跟TableLayout是一组搭配使用的布局,TableLayout置底,TableRow在TableLayout的上面,而TextView等控件就在TableRow之上,另外,TableLayout之上也可以单独放控件。TableLayout是一个使用复杂的布局,最简单的用法就仅仅是拖拉控件做出个界面,但实际上,会经常在代码里使用TableLayout,例如做出表格的效果。
运行结果:
注意:TableLayout经常用的属性是:
android:collapseColumns:以第0行为序,隐藏指定的列,android:collapseColumns该属性为空时,则显示所有列,把android:collapseColumns=0,2,意思是把第0和第2列去掉。
如果android:shrinkColumns:以第0行为序,自动延伸指定的列填充可用部分。
相关推荐
相对布局只要是要有参照物,即谁在谁下方,谁在谁左边,和谁左对齐,等等。然后再添加一个按钮使其在textView的下方以及在立即更新按钮的左边。android:text="发现新的版本,您想现在更新吗?