Android中常见的几种布局的总结

众所周知,一个应用程序的良好与否,很大程度上取决于它的用户界面。这就像是一个人给人的第一感觉也是从脸开始的一样。一个应用程序首先展示给客户的就是它的界面,通途的说,也就是软件的脸面。只有良好的用户交互界面,才能在第一时间抓住客户心理,取得优势。那么今天我就来给大家说一下在Android程序的开发过程中,对于Android应用程序的一些常见的布局以及个人的一些看法,希望对大家有所帮助。

在Android4.0之前一共有5种关于Android的布局,分别是:LinearLayout(线性布局),RelativeLayout(相对布局),FrameLayout(框架布局),AbsoluteLayout(绝对布局),TableLayout(表格布局)。在Android4.0之后又新增了一种布局,GirdLayout(网格布局)。其中常用的布局有LinearLayout(线性布局),RelativeLayout(相对布局)以及最新出的GirdLayout(网格布局)。

首先介绍一下LinearLayout布局,也就是我们平时说的线性布局。顾名思义,所谓线性布局也就是在搭建Android界面时,界面元素的整体排列,呈水平排列(horizntal)或者是竖直排列(vertical)。在线性布局布局中,每一行或每一列只能放单独一个控件。线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。线性布局通过orientation属性来控制元素的排列方式即它的两个值:horizntal,vertical。而且这个属性在布局中一般都是要加进去的,告诉系统你按照什么方式排列。如果不写的话,第一行代码可能会整体报错。

LinearLayout的常见的一些属性:

1.android:orientation    定义布局内控件或组件的排列方式

可选项:vertical 、horizontal

2.android:layout_width   定义控件的宽度

可选项:fill_parent/ match_parent/ wrap_content/绝对数值

备注:fill_parent/ match_parent的效果完全一致,都是填充整个父控件。但是自2.2版本开始推荐使用match_parent 。wrap_content指的是该控件的宽度正好包裹内容物。

3.android:layout_height   定义控件的高度

可选项:fill_parent/ match_parent/ wrap_content/绝对数值

备注:fill_parent/ match_parent的效果完全一致,都是高度填充整个父控件。wrap_content指的是该控件的高度正好包裹内容物。

4.android:id  设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。

设置id的格式为:android:id= "@+id/id的名字"

5.android:background    设置控件的背景颜色或背景图片

例如:android:background="#ffffff"

android:background="@drawable/图片名称"

LinearLayout特有的属性有以下几种:

1、android:orientation   布局管理器内组件的排列方式

2、android:gravity    设置布局管理器内组件的对齐方式

3、android:weightSum  为该布局下的元素设置权重

LinearLayout 子元素的特有属性:

1、android:layout_weight   子元素在 LinearLayout 中所占的权重

2、android:layout_gravity    子元素在 LinearLayout 中的对齐方式(只在LinearLayout和FrameLayout中有效,LinearLayut中只有一个方向起作用,FrameLayou都有效)

接下来再说一下RelativeLayout,相对布局。相对布局在平时的开发中也经常用到。简单来说就是一个界面元素相对于另一个元素的位置。一般需要在定义一个元素时附上该元素的ID,然后另一个元素就可以相对于这个元素进行布局了。

RelativeLayout特有属性:

1、android:gravity    设置布局容器内子控件的对齐方式

2、android:ignoreGravity   设置布局管理器内哪个控件不受gravity属性的影响

RelativeLayout子元素的特有属性:LayoutParams

A、第一组:指兄弟控件之间的相对位置。该组属性的值是另一个控件的id。

  1. layout_toRightOf      该控件在哪个控件的右侧
  2. layout_toLeftOf        该控件在哪个控件的左侧
  3. layout_above           该控件在哪个控件的上侧
  4. layout_below                该控件在哪个控件的下侧

B、第二组:指兄弟控件之间的对齐关系。该组属性的值是另一个控件的id。

  1. layout_alignRight      该控件与哪个控件的右对齐
  2. layout_alignLeft        该控件与哪个控件的左对齐
  3. layout_alignTop        该控件与哪个控件的顶对齐
  4. layout_alignBottom   该控件与哪个控件的底对齐
  5. layout_alignStart   该控件与哪个控件的起始端对齐(4.2新出的)
  6. layout_alignEnd    该控件与哪个控件的末端对齐(4.2新出的)

C、第三组:指控件与父布局之间的对齐关系。该组属性的值是true或者false。

  1. layout_alignParentRight                   该控件与父布局控件的右对齐吗?
  2. layout_alignParentLeft                     该控件与父布局控件的左对齐吗?
  3. layout_alignParentTop                     该控件与父布局控件的顶端对齐吗?
  4. layout_alignParentBottom                该控件与父布局控件的底部对齐吗?
  5. layout_centerInParent                      该控件位于父布局控件的中心位置吗?
  6. layout_centerVertical                        该控件位于父布局控件的垂直中心位置吗?
  7. layout_centerHorizontal                    该控件位于父布局控件的水平中心位置吗?

现在市面上大部分的Android界面通过以上两种布局方式结合使用都可以达到美观大气的效果。接下来再说一下关于Android4.0以后新出的一种布局方式,叫做网格布局(GridLayout)。这类布局方式最典型的一个案例就是我们手机上都带有的计算器界面。当然使用LinearLayout和RelativeLayout也能完成,但是显然使用GridLayout会变得更加容易一点。使用GridLayout需要注意的一点是需要在布局界面的时候首先定义网格的行列数,通常使用的是rowCount和columnCount两个属性来定义网格的行数和列数。再者就是个别网格需要使用: layout_rowSpan 和layout_columnSpan来实现网格的跨行和跨列操作,通俗的说就是行和列的合并。

GridLayout子元素的属性:

1、android:layout_column

属性说明: 显示该控件的列。例如,android:layout_column="0",表示在第1列显示该控件;android:layout_column="1",表示在第2列显示该控件。

2、android:layout_row

属性说明: 该控件所在行。例如,android:layout_row="0",表示在第1行显示该控件;android:layout_row="1",表示在第2行显示该控件。它和 android:layout_column类似。

3、android:layout_columnSpan

属性说明: 列合并。即该控件所占的列数。例如,android:layout_columnSpan="2",表示该控件占2列。

4、android:layout_rowSpan

属性说明: 行合并。即该控件所占的行数。例如,android:layout_rowSpan="2",表示该控件占2行。

5、android:layout_gravity

属性说明:该控件的布局方式。选项值:

  • top                          -- 控件置于容器顶部,不改变控件的大小。
  • bottom                    -- 控件置于容器底部,不改变控件的大小。
  • left                         -- 控件置于容器左边,不改变控件的大小。
  • right                       -- 控件置于容器右边,不改变控件的大小。
  • center_vertical     -- 控件置于容器竖直方向中间,不改变控件的大小。
  • fill_vertical              -- 如果需要,则往竖直方向延伸该控件。
  • center_horizontal -- 控件置于容器水平方向中间,不改变控件的大小。
  • fill_horizontal      -- 如果需要,则往水平方向延伸该控件。
  • center                    -- 控件置于容器中间,不改变控件的大小。
  • fill                         -- 如果需要,则往水平、竖直方向延伸该控件。
  • clip_vertical        -- 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。
  • clip_horizontal     -- 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是  right的,则剪切该控件的左边。
  • start                      -- 控件置于容器的起始处,不改变控件的大小。
  • end                       -- 控件置于容器的结束处,不改变控件的大小。

以上三种布局方式在实际应用开发中是比较常见的,另外的布局方式如FrameLayout(框架布局),AbsoluteLayout(绝对布局),TableLayout(表格布局)相对来说就要使用的少一些,在这里就不一一详述,有兴趣的同学可以在网上搜一下其他的一些布局方式,为Android的学习打下一个良好的基础。以上总结都是我在平时学习中一点一点总结的,可能会有问题,还希望有志趣相投的同学指正,共同进步!

时间: 2024-11-06 18:49:58

Android中常见的几种布局的总结的相关文章

Android中ListView的几种常见的优化方法

Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中只包含一个textview: Activity: package com.alexchen.listviewoptimi

Android中Button的五种监听事件

简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activity本身作为事件监听器,实现onClickListener5.外部类作为监听器 ButtonListenerActivity.class public class ButtonListenerActivity extends AppCompatActivity implements View.On

Android中常见的内存泄漏

为什么会产生内存泄漏? 当一个对象已经不需要再使用了,本该被回收时,而有另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏. 内存泄漏对程序的影响? 内存泄漏是造成应用程序OOM的主要原因之一!我们知道Android系统为每个应用程序分配的内存有限,而当一个应用中产生的内存泄漏比较多时,这就难免会导致应用所需要的内存超过这个系统分配的内存限额,这就造成了内存溢出而导致应用Crash. Android中常见的内存泄漏汇总 1

Android中常用的三种存储方法浅析

Android中常用的三种存储方法浅析 Android中数据存储有5种方式: [1]使用SharedPreferences存储数据 [2]文件存储数据 [3]SQLite数据库存储数据 [4]使用ContentProvider存储数据 [5]网络存储数据 在这里我只总结了三种我用到过的或即将可能用到的三种存储方法. 一.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置信息比如窗口状态,它的本质是基

Java中常见的5种WEB服务器介绍

这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问.开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,比较常用的有Tomcat.Resin.JBoss.WebSphere 和 WebLogic 等,下面将分别进行介绍. Tomc

ExtJS中layout的12种布局风格

原文地址: http://www.cnblogs.com/mingforyou/p/4119200.html ExtJS中layout的12种布局风格 extjs的容器组件都可以设置它的显示风格,它的有效值有 absolute, accordion, anchor, border, card, column, fit, form and table.  一共9种. 另外几种见:  http://www.sencha.com/deploy/dev/examples/layout-browser/l

Android中Activity的4种状态

Android中Activity的四种状态: 1)Active/Runing: 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态. 2)Paused:当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态.此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互. 3)Stoped :当 Activity 被另外一个 Activity 覆盖.失去焦点

Android中常见的设计模式

自己理解的设计模式遵循的原则: 1)功能单一明确,设计一个类的意图要明确,不能大包大揽什么功能都继承进去 2)对于扩展要开放,修改要关闭.软件通常都有需求变化,变化过程中通过扩展的方式来实现需求变化,而不是通过修改原有的方法,因为修改原有的方法会导致原来方法的调用方会出问题,这样层层调用出问题. 3)变化的进行抽象,不变的进行具体.设计代码过程中会面对很对可变的东西,比如在实现一个功能的时候,能够运用不同的方式进行实现,这个时候可以将每个具体的实现方法进行抽象,真正不变的是这个方法要实现的目的

[转]企业网站首页设计常见的6种布局方式

在群里和大家交流时,看到太多的网页设计师发布企业站的个人作品,设计中总是摆脱不了大框套小框的设计布局思路,不加思索的跳入单一的网页布局形式中,于是就有了把企业站常用的页面布局方式总结一下的想法,让大家包括我自己全面的了解一下企业站的常见布局方式,做到对此种类型的网站布局心中有数,跳出狭隘.单一的设计思路,于是就有了这篇文章.很多人常常询问某个页面该如何布局这样的问题,其实网页布局也没有想象中那么难,只要做到两点我认为起码可以做到临阵不慌,一是对常见的布局方式心中有数,二是根据信息内容及设计素材的