使用 <include 直接继承之前的界面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="34dp"
android:background="#f00"
android:gravity="center"
android:text="QQ画报111"
android:textColor="#fff" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include
android:layout_width="match_parent"
android:layout_height=60dp
layout="@layout/zzz" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/zzz" />
<Button
android:id="@+id/button1"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
layout常用属性
第一类:属性值为true或false
android:layout_centerHorizontal 水平居中
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 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
FrameLayout:
这个布局可以看成是墙脚堆东西,有一个四方的矩形的左上角墙脚,我们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简单,也只能放一点比较简单的东西。
AbsoluteLayout::
绝对布局犹如div指定了absolute属性,用X,Y坐标来指定元素的位置android:layout_x="20px" android:layout_y="12px" 这种布局方式也比较简单,但是在垂直随便切换时,往往会出问题,而且多个元素的时候,计算比较麻烦。
TableLayout
TableLayout具有的重要属性:
android:shrinkColumns:该属性用来指明需要折行显示的列(实际中很有用!)下标从0开始的,多列用“,”隔开。
android:collapseColumns:该属性设置需要隐藏的列,下标同样是从0开始的,如有多列用“,”隔开。
android:stretchColumns:设置指定的列可伸展,该列会尽量填满可用空间,多列用“,”隔开
TableRow具有的重要属性:
android:layout_column:控件在表格中所处的列,下标从0开始。
android:layout_span:控件跨越的列数。
在TableLayout中包含TableRow
LinearLayout:
线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。
linearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。
对齐:layout_gravity
垂直(vertical)的LinearLayout布局内无法通过控件的android:layout_gravity=""进行垂直居中,可以水平居中。
水平(horizontal)的LinearLayout布局内无法通过控件的android:layout_gravity=""进行水平居中,可以垂直居中。
2个都可以用布局的属性android:gravity指定所有控件的居中情况(用center可以水平,垂直居中)。
如果想要某个控件单独水平垂直居中,可以在控件外面再套个LinearLayout,然后android:gravity。
LinearLayout中gravity与layout_gravity
LinearLayout有两个非常相似的属性:android:gravity与android:layout_gravity。他们的区别在于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的对齐方式。
通俗点说就是:
android:gravity属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置.该属性就干了这个.
android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左靠右等位置就可以通过该属性设置.
我们弄个最外布局,然后里面包了几个布局,如果要使这几个布局都靠底,就可以在最外布局的属性里设置androi:gravity="botton" 因为gravity是对里面的内容起作用
RelativeLayout
RelativeLayout相对布局
RelativeLayout是一种相对布局,控件的位置是按照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最常用,也是最灵活的一种布局。
我们下面通过XML布局和Java代码布局两种方式分别举例:
一、XML方式布局
1、创建一个空白Activity
2、打开“res/layout/activity_main.xml”文件,修改成以下代码。
(1)第①部分
<?xml version="1.0" encoding="utf-8">,每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0">。这行代码表示按照1.0版本的XML规则进行解析。encoding = "utf-8"表示此xml文件采用utf-8的编码格式。编码格式也可以是GB2312。
如果你对此不太明白,请参阅相关XML文档。
(2)第②部分
<RelativeLayout…… 表示采用相对布局管理器。
(3)第③部分
Android:layout_width="match_parent" android:layout_height="match_parent"表示布局管理器宽度和高充将填充整个屏幕宽度和高度。
3、插入三个按钮。
插入三个按钮,并分别设置其文本为:“第一个按钮”、“第二个按钮”、“第三个按钮”。
我们下一步设置第一个按钮距离左边、上边各20dp,第二个按钮距离第一个按钮左边、上边各10dp;第三个按钮距离第二个按钮上边10dp,与第二个按钮左边对齐。
4、打开“res/layout/activity_main.xml”文件,修改成以下代码。
(1)第①部分
设置第一个按钮,以父元素为基准,贴紧左上,距离20dp。
[java] view plain copy
- <Button
- android:id="@+id/button1"
- android:layout_width="wrap_content" //宽度匹配内容
- android:layout_height="wrap_content" //高度匹配内容
- android:layout_alignParentLeft="true" //贴紧父元素左边
- android:layout_alignParentTop="true" //贴紧父元素上边
- android:layout_marginLeft="20dp" //设置左间距20dp
- android:layout_marginTop="20dp" //设置上间距20dp
- android:text="第一个按钮" />
(2)第②部分
设置第二个按钮,以第一个按钮为基准,在第一个按钮下面,对齐第一个按钮的右边,上距离15dp。
[html] view plain copy
- <Button
- android:id="@+id/button2"
- android:layout_width="wrap_content" //宽度匹配内容
- android:layout_height="wrap_content" //高度匹配内容
- android:layout_below="@+id/button1" //位置在第一个按钮的下面
- android:layout_toRightOf="@+id/button1" //与第一个按钮的右边对齐
- android:layout_marginTop="15dp" //设置上间距15dp
- android:text="第二个按钮" />
(3)第③部分
设置第三个按钮,以第二个按钮为基准,在第二个按钮下面,对齐第二个按钮的左边,距离15dp。
[html] view plain copy
- <Button
- android:id="@+id/button3"
- android:layout_width="wrap_content" //宽度匹配内容
- android:layout_height="wrap_content" //高度匹配内容
- android:layout_below="@+id/button2" //位置在第二个按钮的下面
- android:layout_toLeftOf="@+id/button2" //与第二个按钮的左边对齐
- android:layout_marginTop="15dp" //设置上间距15dp
- android:text="第三个按钮" />
最终显示效果如下: