android几种布局

  • 格式:doc
  • 大小:34.00 KB
  • 文档页数:7

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.
12.
13. RadioGroup orientation;
14. RadioGroup gravity;
15.
16. @Override
17. public void onCreate(Bundle icicle) {
18. super.onCreate(icicle);
19. setContentView(yout.main);
20. orientation = (RadioGroup) findViewById(R.id.orientation);
21. orientation.setOnCheckedChangeListener(this);
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 点击时该组组件居右
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行为序,自动延伸指定的列填充可用部分。