设为首页 加入收藏

TOP

Android UI Layout总结之5大布局
2014-11-23 21:26:33 来源: 作者: 【 】 浏览:21
Tags:Android Layout 总结 布局

By Long Luo


Android.view.View和android.view.ViewGroup


android中的常见UI控件均会扩展View和ViewGroup其中有一部分是专门用来控制其子View位置和大小,这些类我们称为布局管理器。


1.LayoutParams是ViewGroup内部类,包含了ViewGroup的布局参数,用来告诉它们的父类它们想怎么在父类中布局(大小和位置),所有在LayoutParams及其子类中定义的布局参数在xml中定义都是通过layout_***定义的。


LayoutParams只提供了两个参数设定:


2.MarginLayoutParams也是ViewGroup一个内部类,它继承了LayoutParams类,用来扩展LayoutParams的属性,设置参数。


MarginLayoutParams添加了四个参数设定:


以上的两种Layout参数,所有布局中的子ViewGroup和子View都可以使用


下面讲述5种布局:


线性布局是Android布局中最简单的布局,也是最常用,最实用的布局。


android:orientation线形布局的对齐方式 : vertical(垂直) 和 horizontal(水平)


LayoutParams中的特殊参数:


他们的区别在于:


android:gravity用于设置View中内容相对于View组件的对齐方式,而android:layout_gravity用于设置View组件相对于Container的对齐方式。


原理跟android:paddingLeft、android:layout_marginLeft有点类似。如果在按钮上同时设置这两个属性。


下面回到正题, 我们可以通过设置android:gravity=”center”来让EditText中的文字在EditText组件中居中显示;


同时我们设置EditText的android:layout_gravity=”right”来让EditText组件在LinearLayout中居右显示。看下效果:


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


这个布局是最灵活的布局,因此复杂的布局我们多用这个布局。


TableLayout 将子元素的位置分配到行或列中。一个TableLayout 由许多的TableRow 组成,每个TableRow 都会定义一个 row(事实上,你可以定义其它的子对象)。


TableLayout 容器不会显示row 、cloumns 或cell 的边框线。每个row拥有0个或多个的cell;每个cell 拥有一个View对象。


表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML 中的不一样。


特殊的参数:


表示两行两列的一个表格。 android:gravity=”center”书面解释是权重比。其实就是让它居中显示。


它还可以动态添加里面的每行每列。如下代码所示:


android:stretchColumns=”1,2,3,4″ 它的意思就是自动拉伸1,2,3,4列。


AbsoluteLayout可以让子元素指定准确的x/y坐标值,并显示在屏幕上。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。


AbsoluteLayout没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用


AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。


LayoutParams中特殊的参数 :


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


里面可以放多个控件,不过控件的位置都是相对位置


LayoutParams中特殊的参数 :


layout_gravity 相对于父元素的重力值(用法同LinearLayout)


注意事项:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何使用Google Volley网络库发起.. 下一篇SparkSQL使用之如何使用UDF

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: