Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。

Android 众多的布局属性详解
http://www.open-open.com/lib/view/open1328686184311.html

   LinearLayout:
线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。
  如果搭建两行两列的结构,通常的方式是先垂直排列两个元素,每一个元素里再包含一个LinearLayout进行水平排列。
  LinearLayout中的子元素属性android:layout_weight生效,它用于描述该子元素在剩余空间中占有的大小比例。加入一行只有一个文本框,那么它的默认值就为0,如果一行中有两个等长的文本框,那么他们的android:layout_weight值可以是同为1。如果一行中有两个不等长的文本框,那么他们的android:layout_weight值分别为1和2,那么第一个文本框将占据剩余空间的三分之二,第二个文本框将占据剩余空间中的三分之一。android:layout_weight遵循数值越小,重要度越高的原则。


显示效果如下:

Android五大布局(一)LinearLayout.FrameLayout_第1张图片

main.xml:
<?xml version="1.0" encoding="utf-8"?>    <LinearLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="vertical" >        <TextView            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:background="#ff000000"            android:text="@string/hello" />        <LinearLayout            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:orientation="horizontal" >            <TextView                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_weight="1"                android:background="#ff654321"                android:text="1" />            <TextView                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_weight="2"                android:background="#fffedcba"                android:text="2" />        </LinearLayout>    </LinearLayout>



frameLayout:

  FrameLayout是五大布局中最简单的一个布局,在这个布局中,整个界面被当成一块空白备用区域,所有的子元素都不能被指定放置的位置,它们统统放于这块区域的左上角,并且后面的子元素直接覆盖在前面的子元素之上,将前面的子元素部分和全部遮挡。显示效果如下,第一个TextView被第二个TextView完全遮挡,第三个TextView遮挡了第二个TextView的部分位置。
这个布局也可以看成是墙脚堆东西,有一个四方的矩形的左上角墙脚,我们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简单,也只能放一点比较简单的东西

Android五大布局(一)LinearLayout.FrameLayout_第2张图片


<?xml version="1.0" encoding="utf-8"?>    <FrameLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="vertical" >        <TextView            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:background="#ff000000"            android:gravity="center"            android:text="1" />        <TextView            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:background="#ff654321"            android:gravity="center"            android:text="2" />        <TextView            android:layout_width="50dp"            android:layout_height="50dp"            android:background="#fffedcba"            android:gravity="center"            android:text="3" />    </FrameLayout>


FrameLayout就像web中iframe框架一样,是一个框架布局样式,可以用include标签载入定义的另一个layout文件,现在用一个ProgressBar的例子学习一下 FrameLayout。

首先,我们创建一个布局文件,res/layout/fullscreen_loading.xml, 其内容如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:gravity="center_vertical|center_horizontal"android:layout_width="fill_parent"android:layout_height="fill_parentandroid:id="@+id/fullscreen_loading"android:visibility="gone"><ProgressBarandroid:layout_gravity="center_vertical"android:layout_width="wrap_content"android:layout_height="wrap_content"style="?android:attr/progressBarStyleSmall"></ProgressBar><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="5.0dip"android:text="loading..."></TextView></LinearLayout>


然后在main.xml 把它include 进来
<?xml version="1.0" encoding="utf-8"?><FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:orientation="vertical"android:visibility="gone"android:layout_width="fill_parent"android:layout_height="fill_parent"></LinearLayout><includeandroid:visibility="visible"android:layout_width="fill_parent"android:layout_height="fill_parent"layout="@layout/fullscreen_loading"></include></FrameLayout>


运行的效果为:
Android五大布局(一)LinearLayout.FrameLayout_第3张图片

更多相关文章

  1. Android布局之LinearLayout与RelativeLayout的属性
  2. android布局tips,基础知识搜集
  3. Android布局设计中的layout_weight的学习
  4. Android常用布局:线性布局和相对布局
  5. Android 文件布局一些细节备忘
  6. android 虚拟按键遮挡布局
  7. android 线性布局几个属性
  8. Android布局文件的属性值解析

随机推荐

  1. 【Android】事件分发机制
  2. Android GPS学习笔记—LMS初始化
  3. Android开关机动画制作
  4. android中gps的使用以及解析nmea0183协议
  5. android 在调用执行了reboot系统层做部分
  6. 系出名门Android(7) - 控件(View)之ZoomC
  7. Android 相机拓展库,能够实时采集并且识别
  8. android中使用DisplayMetrics获取屏幕参
  9. Android keystore 调试
  10. Android仿微信QQ群头像生成