不是说framelayout不能给子化学元素周期表指定位置吗?为什么用padd...

上一篇:大家好,我们这一节讲一下Android对用五大布局对象,它们分别是FrameLayout(框架布局:不知道是不是这么翻译的),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局).FrameLayout:FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。我们看一下效果图:() 21:27:58其中Main.xml 代码如下:&?xml version=&1.0& encoding=&utf-8&?&
&FrameLayout xmlns:android=&/apk/res/android&
& & android:layout_width=&fill_parent&
& & android:layout_height=&fill_parent&
&!-- 我们在这里加了一个Button按钮 --&
& & android:text=&button&
& & android:layout_width=&fill_parent&
& & android:layout_height=&wrap_content&
& & android:text=&textview&
& & android:textColor=&#0000ff&
& & android:layout_width=&wrap_content&
& & android:layout_height=&wrap_content&
&/FrameLayout&
复制代码LinearLayout:LinearLayout以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一个垂直列表的每一行只会有一个元素,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子元素的高度加上边框高度)。LinearLayout保持子元素之间的间隔以及互相对齐(相对一个元素的右对齐、中间对齐或者左对齐)。LinearLayout还支持为单独的子元素指定weight 。好处就是允许子元素可以填充屏幕上的剩余空间。这也避免了在一个大屏幕中,一串小对象挤成一堆的情况,而是允许他们放大填充空白。子元素指定一个weight 值,剩余的空间就会按这些子元素指定的weight 比例分配给这些子元素。默认的 weight 值为0。例如,如果有三个文本框,其中两个指定了weight 值为1,那么,这两个文本框将等比例地放大,并填满剩余的空间,而第三个文本框不会放大。我们看一下效果图:() 21:27:58其中Main.xm l代码如下:&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
& & android:orientation=&vertical&
& & android:layout_width=&fill_parent&
& & android:layout_height=&fill_parent&&
&LinearLayout
& & android:orientation=&vertical&
& & android:layout_width=&fill_parent&
& & android:layout_height=&fill_parent&
& & android:layout_weight=&2&&
& & &TextView
& & & & android:text=&Welcome to Mr Wei's blog&
& & & & android:textSize=&15pt&
& & & & android:layout_width=&fill_parent&
& & & & android:layout_height=&wrap_content&
& & &/LinearLayout&
& & &LinearLayout
& & android:orientation=&horizontal&
& & android:layout_width=&fill_parent&
& & android:layout_height=&fill_parent&
& & android:layout_weight=&1&&
& & &TextView
& & & & android:text=&red&
& & & & android:gravity=&center_horizontal& //这里字水平居中
& & & & android:background=&#aa0000&
& & & & android:layout_width=&wrap_content&
& & & & android:layout_height=&fill_parent&
& & & & android:layout_weight=&1&/&
& & &TextView
& & & & android:text=&green&
& & & & android:gravity=&center_horizontal &
& & & & android:background=&#00aa00&
& & & & android:layout_width=&wrap_content&
& & & & android:layout_height=&fill_parent&
& & & & android:layout_weight=&1&/&&
& & &/LinearLayout&
&/LinearLayout&
复制代码AbsoluteLayout:AbsoluteLayout 可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。AbsoluteLayout 没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用 AbsoluteLayout ,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。
我们看一下效果图:() 22:34:42其中Main.xm l代码如下:&?xml version=&1.0& encoding=&utf-8&?&
&AbsoluteLayout xmlns:android=&/apk/res/android&
& & android:orientation=&vertical&
& & android:layout_width=&fill_parent&
& & android:layout_height=&fill_parent&
& & android:text=&Welcome to Mr Wei's blog&
& & android:layout_width=&fill_parent&
& & android:layout_height=&wrap_content&
& & android:layout_x=&250px& //设置按钮的X坐标
& & android:layout_y=&40px& //设置按钮的Y坐标
& & android:layout_width=&70px& //设置按钮的宽度
& & android:layout_height=&wrap_content&
& & android:text=&Button&
&/AbsoluteLayout&
复制代码RelativeLayout:RelativeLayout 允许子元素指定他们相对于其它元素或父元素的位置(通过ID 指定)。因此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列,因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位置来排列。如果使用XML 来指定这个 layout ,在你定义它之前,被关联的元素必须定义。让我们看一下效果图:() 22:34:42
其中Main.xml 代码如下:&?xml version=&1.0& encoding=&utf-8&?&
&RelativeLayout xmlns:android=&/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=&Welcome to Mr Wei's blog:&/&
& & &EditText
& & & & android:id=&@+id/entry&
& & & & android:layout_width=&fill_parent&
& & & & android:layout_height=&wrap_content&
& & & & 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&
复制代码TableLayout:TableLayout 将子元素的位置分配到行或列中。一个TableLayout 由许多的TableRow 组成,每个TableRow 都会定义一个 row (事实上,你可以定义其它的子对象,这在下面会解释到)。TableLayout 容器不会显示row 、cloumns 或cell 的边框线。每个 row 拥有0个或多个的cell ;每个cell 拥有一个View 对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML 中的不一样。下面让我们看一下效果图:() 22:40:11其中Main.xml 代码如下:&?xml version=&1.0& encoding=&utf-8&?&
&TableLayout xmlns:android=&/apk/res/android&
& & android:layout_width=&fill_parent& android:layout_height=&fill_parent&
& & android:stretchColumns=&1&&
& & &TableRow&
& & & & &TextView android:layout_column=&1& android:text=&Open...& /&
& & & & &TextView android:text=&Ctrl-O& android:gravity=&right& /&
& & &/TableRow&
& & &TableRow&
& & & & &TextView android:layout_column=&1& android:text=&Save...& /&
& & & & &TextView android:text=&Ctrl-S& android:gravity=&right& /&
& & &/TableRow&
& & &View android:layout_height=&2dip& android:background=&#FF909090& /& //这里是上图中的分隔线
& & &TableRow&
& & & & &TextView android:text=&X& /&
& & & & &TextView android:text=&Export...& /&
& & & & &TextView android:text=&Ctrl-E& android:gravity=&right & /&
& & &/TableRow&
& & &View android:layout_height=&2dip& android:background=&#FF909090& /&
& & &TableRow&
& & & & &TextView android:layout_column=&1& android:text=&Quit&
& & & & & & android:padding=&3dip& /&
& & &/TableRow&
&/TableLayout&
复制代码以上就是Android五大布局对象。下一篇:
Powered by
CopyRight &浙江大学软硬件协同设计实验室_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者
评价文档:
喜欢此文档的还喜欢
浙江大学软硬件协同设计实验室
浙​江​大​学​软​硬​件​协​同​设​计​实​验​室
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:398.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢FrameLayout之我见 - chenlong12580的专栏
- 博客频道 - CSDN.NET
1941人阅读
&在Android中有着几种不同的布局,例如:线性布局、帧布局、表格布局、绝对布局和相对布局。之前一直对帧布局不是很理解,今天仔细看了看,就记录如下:
& & & &首先是看了一下官方文档的说明,以下是我个人的翻译,呵呵,英语太差,感觉翻译的不好:
& & & & 帧布局被设计用来再屏幕上留下一个区域显示单个元素。一般地,帧布局应该被用来显示单个子视图,因为当多个子视图互相不重叠时,要想再不同尺寸的屏幕上组织多个子视图是非常困难的。当然,你还是可以添加多个子元素,并且通过给每个子元素指定
&这个属性来控制它们在帧布局中的位置!
& & 帧布局的子元素都放在一个栈中,最近添加的哪一个就是栈顶元素。帧布局的尺寸决定于它所包含的最大的那个子元素的尺寸(包括填充的区域(padding)),而不管它是否可见(如果它的父组件允许).
& & 通过上面的介绍我们基本可以理解:可以在帧布局里面放置多个组件,这些组件从屏幕的左上角,也即屏幕坐标的(0,0)处开始显示,并且后面的组件会覆盖前面的组件!
& & &我们这里通过在一个FrameLayout中放置3个TextView来实现帧布局,3个TextView必须设置不同的尺寸,而且从下到上尺寸要依次减小,否则覆盖后只能看到最后的那个组件,为了使效果明显,我们还将他们设置为不同的颜色!
& & &这里我们只需设置布局文件即可,具体代码如下:
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&fill_parent&
android:layout_height=&fill_parent&
android:orientation=&vertical& &
&FrameLayout android:id=&@+id/FrameLayout&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content& &
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:width=&200px&
android:height=&200px&
android:background=&#a00&/&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:width=&150px&
android:height=&150px&
android:background=&#0a0&/&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:width=&100px&
android:height=&100px&
android:background=&#00a&/&
&/FrameLayout&
&/LinearLayout&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:325738次
积分:4321
积分:4321
排名:第2833名
原创:70篇
转载:14篇
译文:22篇
评论:105条
文章:36篇
阅读:206550
文章:10篇
阅读:14521
(4)(1)(1)(2)(1)(1)(2)(2)(3)(1)(5)(1)(5)(2)(10)(26)(10)(4)(22)(1)(2)Android 布局(LinearLayout\TableLayout\RelativeLayout\AbsoluteLayout\FrameLayout) - zshow0901的专栏
- 博客频道 - CSDN.NET
Android的五大布局分别是LinearLayout(线性布局)、TableLayout(表格布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和FrameLayout(单帧布局)。
LinearLayout:
  LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,则为N行单列,每一行只有一个元素,而不论这个元素的宽度为多少;如果是水平排列,则为单行N列。如果搭建两行两列的话,通常的方式是先垂直排列两个元素,每一个元素里再各包含一个LinearLayout进行水平排列。
  LinearLayout中的子元素属性android:layout_weight生效,它用于描述该子元素在剩余空间中占有的大小比例。加入一行只有一个文本框,那么它的默认值就为0,如果一行中有两个等长的文本框,那么他们的android:layout_weight值可以是同为1。如果一行中有两个不等长的文本框,那么他们的android:layout_weight值分别为1和2,那么第一个文本框将占据剩余空间的三分之二,第二个文本框将占据剩余空间中的三分之一。android:layout_weight遵循数值越小,重要度越高的原则。
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout&
xmlns:android=&/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:background=&#ff0000ff&&
android:text=&hello LinearLayout&
&LinearLayout&
android:orientation=&horizontal&&
android:layout_width=&fill_parent&&
android:layout_height=&fill_parent&
&TextView&
android:layout_width=&fill_parent&&
android:layout_height=&wrap_content&&
android:background=&#ffff4321&&
android:layout_weight=&1&&
android:text=&1&
&TextView&
android:layout_width=&fill_parent&&
android:layout_height=&wrap_content&&
android:background=&#fffedcba&&
android:layout_weight=&2&&
android:text=&2&
&/LinearLayout&
&/LinearLayout&
TableLayout:
  TableLayout顾名思义,此布局为表格布局,适用于N行N列的布局格式。一个TableLayout由许多TableRow组成,一个TableRow就代表TableLayout中的一行。
  TableRow是LinearLayout的子类,它的android:orientation属性值恒为horizontal,并且它的android:layout_width和android:layout_height属性值恒为MATCH_PARENT和WRAP_CONTENT。所以它的子元素都是横向排列,并且宽高一致的。这样的设计使得每个TableRow里的子元素都相当于表格中的单元格一样。在TableRow中,单元格可以为空,但是不能跨列。
&?xml version=&1.0& encoding=&utf-8&?&
&TableLayout xmlns:android=&/apk/res/android&&
android:orientation=&vertical&&
android:layout_width=&fill_parent&&
android:layout_height=&fill_parent&
&TableRow&
android:layout_width=&fill_parent&&
android:layout_height=&wrap_content&
&TextView&
android:background=&#ffffffff&&
android:gravity=&center&&
android:padding=&10dp&&
android:text=&1&
&TextView&
android:background=&#ffCC4321&&
android:gravity=&center&&
android:padding=&10dp&&
android:text=&2&
&TextView&
android:background=&#fffedcba&&
android:gravity=&center&&
android:padding=&10dp&&
android:text=&3&
&/TableRow&
&TableRow&
android:layout_width=&fill_parent&&
android:layout_height=&wrap_content&
&TextView&
android:background=&#ffCC4321&&
android:gravity=&center&&
android:padding=&10dp&&
android:text=&2&
&TextView&
android:background=&#fffedcba&&
android:gravity=&center&&
android:padding=&10dp&&
android:text=&3&
&/TableRow&
&TableRow&
android:layout_width=&fill_parent&
android:layout_height=&wrap_content&
&TextView&
android:background=&#fffedcba&&
android:gravity=&center&&
android:padding=&10dp&&
android:text=&3&
&TextView&
android:background=&#ffCC4321&&
android:gravity=&center&&
android:padding=&10dp&&
android:text=&2&
&TextView&
android:background=&#ffffffff&&
android:gravity=&center&&
android:padding=&10dp&&
android:text=&1&
&/TableRow&
&/TableLayout&
RelativeLayout:
  RelativeLayout按照各子元素之间的位置关系完成布局。在此布局中的子元素里与位置相关的属性将生效。例如android:layout_below, android:layout_above等。子元素就通过这些属性和各自的ID配合指定位置关系。注意在指定位置关系时,引用的ID必须在引用之前,先被定义,否则将出现异常。
RelativeLayout里常用的位置属性如下:
    android:layout_toLeftOf —— 该组件位于引用组件的左方
    android:layout_toRightOf —— 该组件位于引用组件的右方
    android:layout_above —— 该组件位于引用组件的上方
    android:layout_below —— 该组件位于引用组件的下方
&&&    android:layout_alignParentLeft —— 该组件是否对齐父组件的左端
&&&    android:layout_alignParentRight —— 该组件是否齐其父组件的右端
&&&    android:layout_alignParentTop —— 该组件是否对齐父组件的顶部
&&&    android:layout_alignParentBottom —— 该组件是否对齐父组件的底部
    android:layout_centerInParent —— 该组件是否相对于父组件居中
    android:layout_centerHorizontal —— 该组件是否横向居中
    android:layout_centerVertical —— 该组件是否垂直居中
  RelativeLayout是Android五大布局结构中最灵活的一种布局结构,比较适合一些复杂界面的布局。下面示例就展示这么一个情况,第一个文本框与父组件的底部对齐,第二个文本框位于第一个文本框的上方,并且第三个文本框位于第二个文本框的左方。
RelativeLayout
&?xml version=&1.0& encoding=&utf-8&?&
&RelativeLayout xmlns:android=&/apk/res/android&&
android:orientation=&vertical&&
android:layout_width=&fill_parent&&
android:layout_height=&fill_parent&
&TextView&
android:id=&@+id/text_01&&
android:layout_width=&50dp&&
android:layout_height=&50dp&&
android:background=&#ffffff00&&
android:gravity=&center&&
android:layout_alignParentBottom=&true&&
android:text=&1&
&TextView&
android:id=&@+id/text_02&&
android:layout_width=&50dp&&
android:layout_height=&50dp&&
android:background=&#ffCC4321&&
android:gravity=&center&&
android:layout_above=&@id/text_01&&
android:layout_centerHorizontal=&true&&
android:text=&2&
&TextView&
android:id=&@+id/text_03&&
android:layout_width=&50dp&&
android:layout_height=&50dp&&
android:background=&#fffedcba&&
android:gravity=&center&&
android:layout_toLeftOf=&@id/text_02&&
android:layout_above=&@id/text_01&&
android:text=&3&
&/RelativeLayout&
AbsoluteLayout:
  AbsoluteLayout是绝对位置布局。在此布局中的子元素的android:layout_x和android:layout_y属性将生效,用于描述该子元素的坐标位置。屏幕左上角为坐标原点(0,0),第一个0代表横坐标,向右移动此值增大,第二个0代表纵坐标,向下移动,此值增大。在此布局中的子元素可以相互重叠。在实际开发中,通常不采用此布局格式,因为它的界面代码过于刚性,以至于有可能不能很好的适配各种终端。
AbsoluteLayout
&?xml version=&1.0& encoding=&utf-8&?&
&AbsoluteLayout xmlns:android=&/apk/res/android&&
android:orientation=&vertical&&
android:layout_width=&fill_parent&&
android:layout_height=&fill_parent&
&TextView&
android:layout_width=&50dp&&
android:layout_height=&50dp&&
android:background=&#ffffff00&&
android:gravity=&center&&
android:layout_x=&50dp&&
android:layout_y=&50dp&&
android:text=&1&
&TextView&
android:layout_width=&50dp&&
android:layout_height=&50dp&&
android:background=&#ffcc4321&&
android:gravity=&center&&
android:layout_x=&25dp&&
android:layout_y=&25dp&&
android:text=&2&
&TextView&
android:layout_width=&50dp&&
android:layout_height=&50dp&&
android:background=&#fffedcba&&
android:gravity=&center&&
android:layout_x=&125dp&&
android:layout_y=&125dp&&
android:text=&3&
&/AbsoluteLayout&
FrameLayout:
  FrameLayout是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。显示效果如下,第一个TextView被第二个TextView完全遮挡,第三个TextView遮挡了第二个TextView的部分位置。
FrameLayout
&?xml version=&1.0& encoding=&utf-8&?&
&FrameLayout xmlns:android=&/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=&fill_parent&&
android:background=&#ff00ff00&&
android:gravity=&center&&
android:text=&1&
&TextView&
android:layout_width=&200dp&&
android:layout_height=&100dp&&
android:background=&#ffcc4321&&
android:gravity=&center&&
android:text=&2&
&TextView&
android:layout_width=&50dp&&
android:layout_height=&50dp&&
android:background=&#FFfFFF00&&
android:gravity=&center&&
android:text=&3&
&/FrameLayout&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:21847次
排名:千里之外
原创:27篇
转载:18篇
(6)(13)(1)(1)(16)(10)

我要回帖

更多关于 dnf元素 的文章

 

随机推荐