一、线性布局-LinearLayout(至上而下布局)
其中
android:orientation=”vertical”意思为垂直
方向的线性布局,此处的”vertical”可改为”horizontal”,意思是水平方向的线性布局。
android:layout_width=”match_parent”意思为这个控件的宽度占满整个屏幕或者父控件,此处的”match_parent”可改为”wrap_parant”,意思是宽度刚好包含住LinearLayout里面的内容。
常用布局控件:
android:id为控件指定相应的ID
android:text指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串
android:gravity控制这个一个控件的位置,比如居中、靠右、底部、上部等
android:textSize指定控件当中字体的大小
android:background指定该控件所使用的背景色,RGB命名法
android:layout_weight数值为几即该控件占满整个屏幕的数值合之几,比如当前Activity中有2个控件,第一个控件是android:layout_weight=”2″,第二个控件是android:layout_weight=”3″,则,第一个控件占整个屏幕的3/5。
android:height指定控件的高度
android:padding*指定控件的内边距,也就是说控件当中的内容,如android:paddingLeft=”10dip”、android:paddingRight=”10dip”等等。也可以直接android:padding=”10dip”意思是说内边距4面距离都为10.
android:singleLine如果设置为真的话,则将控件的所有内容在同一行当中进行显示
二、表格布局-TableLayout
概述:
TableLayout多用于列表的显示
1、把子元素放到行与列中。
2、不显示行、列和单元格的边界线。
3、单元格不能横跨行,类似于html。
//这一条语句的意思是:是设置 TableLayout所有行的第二列为拉伸列。也就是说如果每行都有三列的话,剩余的空间由第二列补齐。为0时则是第一列为拉伸列。目的是为了把父控件填满。
三、嵌套布局即多个布局嵌套使用。
如要实现以下布局:即多个LinearLayout嵌套
//需要注意的是嵌套的LinearLayout权重都是1,即各自占屏幕的一半。
四、相对布局-RelativeLayout
概念:
类似于CSS+DIV布局。
一个控件的位置,决定于他和周围控件的关系。
与其他控件的区别:
相对布局是依赖与和周围控件的关系而决定为位置的,如将A控件放在B控件的下方。
其中以下属性在实际应用中可能经常用到
android:layout_above将该控件的底部至于给定ID的控件之上
android:layout_below将该控件的顶部至于给定ID的控件之下
android:layout_toLeftOf将该控件的右边缘和给定ID的控件的左边缘对齐
android:layout_toRightOf将该控件的左边缘和给定ID的控件的右边缘对齐
android:layout_alignBaseline该控件的baseline和给定ID的控件的baseline对齐
android:layout_alignBottom将该控件的底部边缘与给定ID控件的底部边缘
android:layout_alignLeft将该控件的左边缘与给定ID控件的左边缘对齐
android:layout_alignRight将该控件的右边缘与给定ID控件的右边缘对齐
android:layout_alignTop将给定控件的顶部边缘与给定ID控件的顶部对齐
android:layout_alignParentBottom如果该值为true,则将该控件的底部和父控件的底部对齐
android:layout_alignParentLeft如果该值为true,则将该控件的左边与父控件的左边对齐
android:layout_alignParentRight如果该值为true,则将该控件的右边与父控件的右边对齐
android:layout_alignParentTop如果该值为true,则将控件的顶部与父控件的顶部对齐
android:layout_centerHorizontal如果值为真,该控件将被至于水平方向的中央
android:layout_centerInParent如果值为真,该控件将被至于父控件水平方向和垂直方向的中央
android:layout_centerVertical如果值为真,该控件将被至于垂直方向的中央
通俗的理解 Padding 为内边框,Margin 为外边框
对应的属性为
android:layout_marginBottom=”25dip”
android:layout_marginLeft=”10dip”
android:layout_marginTop=”10dip”
android:layout_marginRight=”10dip”
android:paddingLeft=”1dip”
android:paddingTop=”1dip”
android:paddingRight=”1dip”
android:paddingBottom=”1dip”
如果左右上下都是相同的设置则可以直接设置
android:layout_margin=”10dip”
android:padding=”5dip”
四、帧布局和网格布局-FrameLayout & GridLayout
FrameLayout
帧布局,在这种布局下,每个添加的子控件都被放在布局的左上角,并覆盖在前一个子控件的上层;此外,FrameLayout中的子控件的位置不能被指定。
GridLayout
网格布局,自Android4.0版本(API level 14)后,新增的网格布局。
注意:如果要达到网格的效果,推荐使用LinearLayout来实现,因为使用GridLayout会产生如下问题:
不能同时在(x,y)轴方向上进行控件的对齐;
当多层布局嵌套的时候会出现性能问题;
不能稳定地支持一些支持自由编辑布局的工具。
计算器界面
用GridLayout和Button模仿了一个计算器的按键界面。
gridlayout_calculator.jpg
布局源码
文/Ruj(简书作者)
原文链接:http://www.jianshu.com/p/4f0a7d319c89
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
文/Ruj(简书作者)
原文链接:http://www.jianshu.com/p/4f0a7d319c89
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。