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行为序,自动延伸指定的列填充可用部分。

相关推荐