android几种布局

LinearLayout

orientation:指定控件的方向,分别有horizontal(水平),vertical(垂直),在代码里可通过setOrientation()进行动态改变,值分别为HORIZONTAL或者VERTICAL
fill model:可分别使用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-and top-aligned的,但可通过对应的xml属性android:layout_gravity重新设置(在代码中可通过setGravity()进行设置)
Padding:为边距,可通过android:padding属性进行设置,4个方向的边距属性为android:paddingLeft, android:paddingRight, android:paddingTop, and android:paddingBottom.
以下为一个简单的演示:
先建一个Android功能,在main.xml中录入如下内容:

Activity内容如下:
Java代码
1. package com.cenphoenix.demo.linelayout;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5. import android.view.Gravity;
6. import android.widget.LinearLayout;
7. import android.widget.RadioGroup;
8.
9. public class LineLayout extends Activity implements
10. RadioGroup.OnCheckedChangeListener {
11. /** Called when the activity is first created. */
12.
13. RadioGroup orientation;
14. RadioGroup gravity;
15.
16. @Override
17. public void onCreate(Bundle icicle) {
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. public void onCheckedChanged(RadioGroup group, int checkedId) {
28. if (group == orientation) {
29. if (checkedId == R.id.horizontal) {
30. orientation.setOrientation(LinearLayout.HORIZONTAL);//水平
31. } else {
32. orientation.setOrientation(LinearLayout.VERTICAL);//垂直
33. }
34. } else if (group == gravity) {
35. if (checkedId == R.id.left) {
36. gravity.setGravity(Gravity.LEFT); // 点击时该组组件居左
37. } else if (checkedId == R.id.center) {
38. gravity.setGravity(Gravity.CENTER); //center_horizontal 点击时该组组件居中
39. } else if (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布局里的控件包含丰富的排列属性:
  Layout above:选择ID A,则该控件在A控件的上方, Layout below、Layout to left 等同样用法。使用 RelativeLayout布局的时候,最好在界面设计时 做好布局,尽少程序运行时 做控件布局的更改,因为 RelativeLayout布局里面的属性之间,很容易冲突,例如, Layout below、 Layout above同选 ID A,那就肯定发生冲突了。
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行为序,自动延伸指定的列填充可用部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值