• 498 阅读
  • 3 回复

关于RelativeLayout的一些看法,欢迎拍砖。

视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)
首先,交代情况,以前很少用RelativeLayout,但是这次项目用到了,就拿来用,发现这东西太灵活了。很容易给人造成一些错误。

下面谈谈听雪的看法。


引用

From Tutorials:

If you find yourself using several nested LinearLayout groups, you may be able toreplace them with a single RelativeLayout


以上来自Tutorials,听雪理解的观点是,当有过个ViewGroup嵌套的时候,再去考虑用RelativeLayout,听雪觉得既然官方这么写,很程度是因为,RelativeLayout太灵活了,它的灵活性给我们对UI的控制多少回造成一定影响。

曾经有人跟听雪说过,RelativeLayout跟FrameLayout有一些相似,给人的感觉是分层的。有层的这个概念。
听雪觉得不是这样的,是没有层的概念的。从官方的解释上可以看出这东西就是可以设置相对布局的一个布局而已。没有层的概念。

先上段代码,更直观的看看。




Java代码

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout  
  3.    xmlns:android="http://schemas.android.com/apk/res/android"
[*]    android:layout_width="fill_parent"

[*]    android:layout_height="fill_parent"
[*]    android:background="#CCFFFF">  
[*]    <LinearLayout  
[*]        android:id="@+id/linearLayout"
[*]        android:layout_width="fill_parent"
[*]        android:layout_height="200dp"
[*]        android:background="#32000033"
[*]        android:orientation="vertical">  
[*]        <Button  
[*]            android:id="@+id/button1"
[*]            android:layout_width="fill_parent"
[*]            android:layout_height="wrap_content"
[*]            android:background="#FF3300"
[*]            android:text="Button" />  
[*]        <TextView  
[*]            android:id="@+id/textView"
[*]            android:layout_width="fill_parent"
[*]            android:layout_height="wrap_content"
[*]            android:layout_weight="1"
[*]            android:text="Base"
[*]            android:textColor="#6633FF"
[*]            android:gravity="center" />  
[*]        <Button  
[*]            android:id="@+id/button2"
[*]            android:layout_width="fill_parent"
[*]            android:layout_height="wrap_content"
[*]            android:background="#FF3300"
[*]            android:text="Button" />  
[*]    </LinearLayout>  
[*]    <Button  
[*]        android:id="@+id/button3"
[*]        android:layout_width="100dp"
[*]        android:layout_height="50dp"
[*]        android:layout_centerInParent="true"
[*]        android:layout_alignBottom="@id/linearLayout"
[*]        android:text="button" />  
[*]</RelativeLayout>  
<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:background="#CCFFFF">    <LinearLayout        android:id="@+id/linearLayout"        android:layout_width="fill_parent"        android:layout_height="200dp"        android:background="#32000033"        android:orientation="vertical">        <Button            android:id="@+id/button1"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:background="#FF3300"            android:text="Button" />        <TextView            android:id="@+id/textView"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="Base"            android:textColor="#6633FF"            android:gravity="center" />        <Button            android:id="@+id/button2"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:background="#FF3300"            android:text="Button" />    </LinearLayout>    <Button        android:id="@+id/button3"        android:layout_width="100dp"        android:layout_height="50dp"        android:layout_centerInParent="true"        android:layout_alignBottom="@id/linearLayout"        android:text="button" /></RelativeLayout>
只贴xml,activity没什么东西,就显示一下罢了。


运行效果图





很明显可以看出button3的下边缘是跟lineLayout的下边缘在一条水平线上的。




Java代码

  1. android:layout_alignBottom="@id/button1"

android:layout_alignBottom="@id/button1"
但是当像上面一样设置的时候,我们可能会是想让button3的下边缘跟button1的下边缘在一个水平线,但是这些写的效果却不是按我们所想的显示,如此设置根本不起作用。





这其中的原因,听雪是这样认为的,首先,linearLayout,Button这些组件都是在android.widget这个包中的。他们是同一级别的。只是说linearLayout是一个ViewGroup可以再包含其他的View而已。不存在其他的优先级关系。

所以,听雪的理解是,如果Button3这个控件要同其他控件产生相互关系的话,首先他们是要位于同一级别的。(此处说的级别不是说组件级别,而是在xml文件里面设置的级别,如:linearLayout和button3是一级的话,那button2,textView,button3既是二级)
只有同一级别的才能设置关系,否则的话设置相互之间的位置关系就不会起作用。

这就是听雪的理解,根本不存在层的概念。

欢迎各位拍砖。


http://www.iteye.com/topic/932508
小鱼的淘宝店铺-多多支持哇

Android布局之RelativeLayout(相对布局)

视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)

相对布局由于属性比较多,所以用起来有些费力,但灵活性较其他布局方法好,所以掌握好相对布局将会非常有用。先看等一个例子:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Type here:"/>
<EditText
android:id="@+id/entry"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:layout_below="@id/label"/>
<Button
android:id="@+id/ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/entry"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:text="OK"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/ok"
android:layout_alignTop="@id/ok"
android:text="Cancel"/>
</RelativeLayout>

这是很常见的布局内容,讲解如下:
android:layout_below="@id/label"/>
将当前控件放置于id为label 的控件下方。
android:layout_alignParentRight="true"
使当前控件的右端和父控件的右端对齐。这里属性值只能为true或false,默认false。
android:layout_marginLeft="10dip"
使当前控件左边空出相应的空间。
android:layout_toLeftOf="@id/ok"
使当前控件置于id为ok的控件的左边。
android:layout_alignTop="@id/ok"
使当前控件与id控件的上端对齐。

至此,我们已经发现,其属性之繁多。下面简单归纳一下:
第一类:属性值为true或false
*android:layout_centerHrizontal
*android:layout_centerVertical
*android:layout_centerInparent
*android:layout_alignParentBottom
*android:layout_alignParentLeft
*android:layout_alignParentRight
*android:layout_alignParentTop
*android:layout_alignWithParentIfMissing
第二类:属性值必须为id的引用名“@id/id-name”
*android:layout_below
*android:layout_above
*android:layout_toLeftOf
*android:layout_toRightOf
*android:layout_alignTop
第三类:属性值为具体的像素值,如30dip,40px
*android:layout_marginBottom
*android:layout_marginLeft
*android:layout_marginRight
*android:layout_marginTop

再看第二个例子:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<AnalogClock
android:id="@+id/aclock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
<DigitalClock
android:id="@+id/dclock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/aclock"
android:layout_alignLeft="@id/aclock"
android:layout_marginLeft="40px"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="当前时间:"
android:layout_toLeftOf="@id/dclock"
android:layout_alignTop="@id/aclock"/>
</RelativeLayout>
两个例子的效果图如下:


第一个例子











































第二个例子

http://apps.hi.baidu.com/share/detail/24553059
小鱼的淘宝店铺-多多支持哇

Android UI学习 - Linear Layout, RelativeLayout

视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)

1. 一些常用的公共属性介绍
1) layout_width - 宽
   fill_parent: 宽度和父元素相同,wrap_content: 宽度随本身的内容所调整,或者指定 px 值来设置宽

2) layout_height - 高
   fill_parent: 高度和父元素相同,wrap_content: 高度随本身的内容所调整,或者指定 px 值来设置高

3) background - 设置背景图

4) padding - 设置边距
   可以具体设置paddingBottom,paddingLeft,paddingRight,paddingTop来设定不同的px值

5) id - 该object的id号
@+id/id1 代表添加新的id名为id1, @id/id1 代表引用id1的控件

6) layout_weight - 重要度
    个人理解为显示的优先级。默认为0(最高),数值越大,优先级越低!参考下面的Linear Layout例子。要让layout_weight生效,需要父层或父父层的相应layout_width/layout_height = "fill_parent",否则wrap_content会压缩到最小足够空间!

7) layout_gravity - Container组件的对齐方式
    组件在layout里面的对齐方式。

8) gravity - 文字在组件里的对齐方式
   例如设置button里面的文字在button中居中显示。

* 大多数属性是可以调用对应的函数来动态改变状态的,请查看SDK Doc。

2. Linear Layout 线形布局

orientation - 容器内元素的排列方式。vertical: 子元素们垂直排列,horizontal: 子元素们水平排列。在代码里可通过setOrientation()进行动态改变,值分别为HORIZONTAL或者VERTICAL。
    * 在Linear Layout,  宽度/高度都是按着组件的次序逐个占用的!所以当某个组件设置"fill_parent",在没有设置Layout_weight的情况下,该组件会占用了余下的空间,那么在它后面的组件就会显示不出来。如下图的EditText如果没有设置android:layout_weight="1", 它下面的其他组件就看不见了!

baselineAligned 一般情况下,这个属性默认为true,代表在同一方向的组件都基于第一个组件对齐。所以可以看到下图的text1, button1, text2是在同一水平线的。当不需要这效果时,可以设置为false。

   可以参考官方网页http://androidappdocs.appspot.com/resources/tutorials/views/hello-linearlayout.html

xml代码:
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">

  6. <TextView
  7. android:text="@string/hello"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. />
  11. <EditText
  12. android:layout_width="fill_parent"
  13. android:layout_height="wrap_content"
  14. android:layout_weight="1"
  15. android:id="@+id/edittext"
  16. />

  17. <LinearLayout
  18. android:id="@+id/LinearLayout01"
  19. android:layout_width="fill_parent"
  20. android:layout_height="wrap_content"
  21. android:orientation="horizontal">
  22. <TextView
  23. android:text="text1"
  24. android:id="@+id/TextView01"
  25. android:layout_width="wrap_content"
  26. android:layout_height="wrap_content"
  27. />
  28. <Buttonandroid:text="Button01"
  29. android:id="@+id/Button01"
  30. android:layout_width="fill_parent"
  31. android:layout_height="wrap_content"
  32. android:layout_weight="1"
  33. />
  34. <TextView
  35. android:text="text2"
  36. android:id="@+id/TextView02"
  37. android:layout_width="wrap_content"
  38. android:layout_height="wrap_content"
  39. />
  40. </LinearLayout>

  41. <TextView
  42. android:layout_width="wrap_content"
  43. android:layout_height="wrap_content"
  44. android:text="buttom"
  45. />

  46. </LinearLayout>


3. RelativeLayout  相对定位布局
    这个布局比较易懂,但组件间容易存在依赖关系,“牵一发而动全身“,所以在确定组件间布局关系不会再变动时,可以考虑采用!先看看xml代码:
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="wrap_content"
  5. android:layout_height="wrap_content"
  6. android:id="@+id/relativelayout">

  7. <ImageView
  8. android:id="@+id/image"
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:src="@drawable/icon"
  12. />
  13. <TextView
  14. android:id="@+id/text1"
  15. android:layout_width="fill_parent"
  16. android:layout_height="wrap_content"
  17. android:text="@string/hello"
  18. android:layout_toRightOf="@id/image"
  19. />
  20. <Button
  21. android:id="@+id/button1"
  22. android:layout_width="fill_parent"
  23. android:layout_height="wrap_content"
  24. android:text="button1"
  25. android:layout_toRightOf="@id/image"
  26. android:layout_below="@id/text1"
  27. />
  28. </RelativeLayout>

Java代码(动态添加组件):
  1. publicclass RelativeDemo extends Activity {

  2. @Override
  3. publicvoid onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5.        setContentView(R.layout.relative);

  6. RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
  7.            ViewGroup.LayoutParams.FILL_PARENT, //width
  8.            ViewGroup.LayoutParams.WRAP_CONTENT //height
  9.        );

  10. //设置editText layout_below="@id/button1"
  11. lp.addRule(RelativeLayout.BELOW, R.id.button1);

  12. //设置editText layout_alignLeft="@id/image"
  13. lp.addRule(RelativeLayout.ALIGN_LEFT, R.id.image);

  14.        ((RelativeLayout) findViewById(R.id.relativelayout)).addView(
  15. new EditText(this), lp);
  16.    }
  17. }

效果图:

    先添加参照物(ImageView),然后就可以依次添加其他组件,定义位置规则rule!位置规则是不分先后的!另外ADT插件提供的预览图,有时候是不准的,未能及时更新,所以最好还是要到模拟器上测试!

    RelativeLayout的xml属性很多,总的来说分为2类:
    1) 要指定参照物的,layout_alignBottom,layout_toLeftOf,layout_above,layout_alignBaseline系列的;
         layout_above = ”@id/text1“
    2) 以parent为参照物,设置true/false,layout_centerVertical,layout_alignParentLeft系列的。
         layout_alignParentLeft = ”true“

     其中layout_alignWithParentIfMissing是比较有用且要注意的属性,当设置为true,在指定的参照物找不到的情况下,会使用parent作为新的参照物!

RelativeLayout.LayoutParams是用于设置位置规则的。上述的xml属性均来自此静态类。但它的AddRule(int verb, int anchor),参数的verb动作却是引用RelativeLayout的常量,而这些常量和部分xml属性相对应。参数anchor的值可能是参照物的id,RelativeLayout.TRUE,-1(当不需要指定anchor的verb)。可以这样理解verb和anchor:
xml属性 (verb) = "value" (anchor)

    其中它的构造函数之一: RelativeLayout.LayoutParams(int w, int h),参数指定所要设置子View的宽度和高度。

本文出自 “学习Android” 博客,请务必保留此出处http://android.blog.51cto.com/268543/298345
小鱼的淘宝店铺-多多支持哇

Android的Layout整理(ZZ)

视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)
1.FrameLayout

FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。



FrameLayout is the simplest type of layout object. It's basically a blank space on your screen that you can later fill with a single object — for example, a picture that you'll swap in and out. All child elements of the FrameLayout are pinned to the top left corner of the screen; you cannot specify a different location for a child view. Subsequent child views will simply be drawn over previous ones, partially or totally obscuring them (unless the newer object is transparent).
FrameLayout默认填充widget等在左上角,然后后面的控件遮住前面的,比如说有两个TextView,Text内容分别是I am textview 1 和
I am textview 2 看到的效果会如下:
?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="htHTMLtp://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<TextView  
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="I am textview 1"
   />
   <TextView  
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="I am textview 2"
   />

</FrameLayout>

2.LinearLayout

LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。

LinearLayout 还支持为单独的子元素指定weight。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight值,剩余的空间就会按这些子元素指定的weight比例分配给这些子元素。默认的weight值为0。例如,如果有三个文本框,其中两个指定了weight值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。

下面的两个窗体采用LinearLayout,包含一组的元素:一个按钮,几个标签,几个文本框。两个窗体都为布局做了一番修饰。文本框的width被设置为FILL_PARENT;其它元素的width被设置为WRAP_CONTENT。默认的对齐方式为左对齐。左边的窗体没有设置weight(默认为 0);右边的窗体的comments文本框weight被设置为1。如果Name文本框也被设置为1,那么Name和Comments这两个文本框将会有同样的高度。



在一个水平排列的LinearLayout中,各项按他们的文本基线进行排列(第一列第一行的元素,即最上或最左,被设定为参考基线)。因此,人们在一个窗体中检索元素时,就不需要七上八下地读元素的文本了。我们可以在layout的XML中设置 android:baselineAligned="false",来关闭这个设置。



LinearLayout aligns all children in a single direction — vertically or horizontally, depending on how you define the orientation
attribute. All children are stacked one after the other, so a vertical list will only have one child per row, no matter how wide they are, and a horizontal list will only be one row high (the height of the tallest child, plus padding). A LinearLayout respects margins between children and the gravity(right, center, or left alignment) of each child.
LinearLayout是Android sdk创建project时的默认Layout,支持两种方式,默认是垂直vertical的线性layout,另一个是水平horizontal方向的线性排列。
效果如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<TextView  
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="I am textview 1"
   />
   <TextView  
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="I am textview 2"
   />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<TextView  
   android:layout_width="10px"
   android:layout_height="fill_parent"
   android:text="I am textview 1"
   />
   <TextView  
   android:layout_width="10px"
   android:layout_height="wrap_content"
   android:text="I am textview 2"
   />

</LinearLayout>

3.RelativeLayout

RelativeLayout允许子元素指定他们相对于其它元素或父元素的位置(通过ID指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML来指定这个layout,在你定义它之前,被关联的元素必须定义。
这是一个RelativeLayout例子,其中有可视的和不可视的元素。基础的屏幕layout对象是一个RelativeLayout对象。


这个视图显示了屏幕元素的类名称,下面是每个元素的属性列表。这些属性一部份是由元素直接提供,另一部份是由容器的LayoutParams成员(RelativeLayout的子类)提供。RelativeLayout参数有 width,height,below,alignTop,toLeft,padding和marginLeft。注意,这些参数中的一部份,其值是相对于其它子元素而言的,所以才RelativeLayout。这些参数包括toLeft,alignTop和below,用来指定相对于其它元素的左,上和下的位置。


RelativeLayout lets child views specify their position relative to the parent view or to each other (specified by ID). So you can align two elements by right border, or make one below another, centered in the screen, centered left, and so on. Elements are rendered in the order given, so if the first element is centered in the screen, other elements aligning themselves to that element will be aligned relative to screen center. Also, because of this ordering, if using XML to specify this layout, the element that you will reference (in order to position other view objects) must be listed in the XML file before you refer to it from the other views via its reference ID.



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:padding = "10px"
   >
<TextView  
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="I am textview 1"
/>
   <TextView  
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="I am textview 2"
   android:layout_marginLeft = "150px"
   />
  <Button
  android:id="@+id/Button02" android:layout_width="wrap_content" android:text="Ok"
  android:layout_height="wrap_content"
  android:layout_marginLeft = "240px"
  android:layout_marginTop = "40px"
  ></Button>
  <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:text="Cancel" android:layout_height="wrap_content"
  android:layout_marginLeft = "160px"
  android:layout_marginTop = "40px"
  ></Button>



</RelativeLayout

4.AbsoluteLayout

AbsoluteLayout可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。


5.TableLayout

TableLayout将子元素的位置分配到行或列中。android的一个TableLayout由许多的TableRow组成,每个TableRow都会定义一个row(事实上,你可以定义其它的子对象,这在下面会解释到)。TableLayout容器不会显示row、cloumns或cell的边框线。每个row拥有0个或多个的cell;每个cell拥有一个 View对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML中的不一样。下图显示了一个TableLayout,图中的虚线代表不可视的单元格边框。




列可以被隐藏,也可以被设置为伸展的从而填充可利用的屏幕空间,也可以被设置为强制列收缩直到表格匹配屏幕大小。对于更详细信息,可以查看这个类的参考文档。


TableLayout positions its children into rows and columns. TableLayout containers do not display border lines for their rows, columns, or cells. The table will have as many columns as the row with the most cells. A table can leave cells empty, but cells cannot span columns, as they can in HTML.
TableRow objects are the child views of a TableLayout (each TableRow defines a single row in the table). Each row has zero or more cells, each of which is defined by any kind of other View. So, the cells of a row may be composed of a variety of View objects, like ImageView or TextView objects. A cell may also be a ViewGroup object (for example, you can nest another TableLayout as a cell).
TableLayout和HTML的<table>基本上类似,还提供TableRow class, 直接等价与<tr>  比如说要做成一个类似下面的HTML叶面

I am textview1I am textview2
[OK button]
[Cancel button]
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"

>
<TableRow android:background="@drawable/a1">
   <TextView
       android:text="I am textview 1" />
   <TextView  
       android:paddingLeft = "20px"        
       android:width = "200px"

       android:text="I am textview 2"
   />
   </TableRow>
   <TableRow android:background="@drawable/a1">
  <Button
  android:id="@+id/Button02"  android:text="Ok"
    ></Button>
  <Button android:id="@+id/Button01" android:text="Cancel"
  ></Button>

</TableRow>

</TableLayout>

小鱼的淘宝店铺-多多支持哇