作者:郭孝星

微博:郭孝星的新浪微博

邮箱:allenwells@163.com

博客:http://blog.csdn.net/allenwells

Github:https://github.com/AllenWells

【Android应用开发技术:用户界面】章节列表

布局管理继承于ViewGroup。它用来管理Android应用用户界面里各组件,它的使用使得Android应用的图形用户界面具有良好的平台无关性。

常见的布局方式例如以下所看到的:

  • 线性布局
  • 表格布局
  • 帧布局
  • 相对布局
  • 网络布局

一 线性布局

线性布局。即LinearLayout,控制容器内的组件横向或纵向地一个挨着一个排列起来。

1.1 线性布局特点

例如以下图所看到的:

线性布局并不会自己主动换行,当一行组件徘满时,多出的组件不会显示出来。

1.2 线性布局属性

属性名称 属性说明
android:gravity 设置线性布局的内部元素的布局对齐方式

android:gravity 取值例如以下所看到的:

  • top 不改变控件大小,对齐到容器顶部
  • bottom 不改变控件大小,对齐到容器底部
  • left 不改变控件大小,对齐到容器左側
  • right 不改变控件大小,对齐到容器右側
  • center_vertical 不改变控件大小,对齐到容器纵向中央位置
  • center_horizontal 不改变控件大小,对齐到容器横向中央位置
  • center 不改变控件大小。对齐到容器中央位置
  • fill_vertical 若有可能,纵向拉伸以填满容器
  • fill_horizontal 若有可能,横向拉伸以填满容器
  • fill 若有可能,纵向横向同一时候拉伸以填满容器

二 表格布局

表格布局,即TableLayout,继承于LinearLayout。它通过行、列的形式管理UI组件。

2.1 表格布局特点

  1. TableLayout通过加入TableRow和其它组件来控制表格的行数和列数。每一个TabRow就是一个表格行,TableRow也是容器,也能够在TableRow中加入其它组件。
  2. 假设直接在TableLayout中加入一个组件。那么这个组件则独占一行。
  3. TableLayout中列的宽度由该列中最宽的那个单元格决定,整个表格布局的宽度则取决于父容器的宽度。
  4. 单元格的设置有下面三种行为方式:
    • Shrinkable:该列全部单元格能够被收缩,以保证该表格能适应父容器的宽度。
    • Stretchable:该列全部单元格能够被拉伸,以保证组件能够全然填满表格空余空间。

    • Collapsed:该列全部单元格会被隐藏。

三 帧布局

帧布局。即FrameLayout。它继承了ViewGroup。帧布局为每一个加入当中的组件创建一个空白的区域,称为一帧。每一个子组件占领一帧。帧布局是元素的相互叠加。

四 相对布局

相对布局。即RelativeLayout,相对布局内子组件的位置总是相对于兄弟组件和父容器来决定的。

4.1 相对布局特点

相对布局例如以下图所看到的:

4.2 相对布局属性

4.2.1 RelativeLayout中取值为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 參照控件不存在或不可见时參照父控件

4.2.2 RelativeLayout中取值为其它控件id的属性列表

属性名称 属性说明
android:layout_toRightOf 使当前控件位于给出id控件的右側
android:layout_toLeftOf 使当前控件位于给出id控件的左側
android:layout_above 使当前控件位于给出id控件的上方
android:layout_below 使当前控件位于给出id控件的下方
android:layout_alignTop 使当前控件的上边界与给出id控件的上边界对齐
android:layout_alignBottom 使当前控件的下边界与给出id控件的下边界对齐
android:layout_alignLeft 使当前控件的左边界与给出id控件的左边界对齐
android:layout_alignRight 使当前控件的右边界与给出id控件的右边界对齐

4.2.3 RelativeLayout中取值为像素的属性列表

属性名称 属性说明
android:layout_marginLeft 当前控件左側的留白
android:layout_marginRight 当前控件右側的留白
android:layout_marginTop 当前控件上方的留白
android:layout_marginBottom 当前控件下方的留白
android:layout_margin 当前控件上下左右四个方向的留白
android:paddingLeft 当前控件中内容距离控件左边留白
android:paddingRight 当前控件中内容距离控件右边留白
android:paddingTop 当前控件中内容距离控件顶部留白
android:paddingBottom 当前控件中内容距离控件底部留白

五 网络布局

网络布局,即GridLayout,它将容器划分为row x column个网格。每一个网格能够放置一个组件。在该布局内。一个组件能够横跨多行,也能够横跨多列。

网络布局例如以下图所看到的:

【Android应用开发技术:用户界面】布局管理器的更多相关文章

  1. Android开发5:布局管理器2(表格布局TableLayout)

    版本:Android4.3 API18  学习整理:liuxinming 概念      TableLayout继承了LinearLayout,因此它的本质依然是线性布局管理器.      表格布局采 ...

  2. Android 布局管理器

    为了更好地管理Android应用程序的用户界面组件,Android它提供了一个布局管理.通过使用布局管理,Android具有良好的平台无关的图形用户界面应用程序. 平时,推荐布局管理器来管理分布式组件 ...

  3. Android UI组件:布局管理器

    为了更好的管理Android应用的用户界面中的组件,Android提供了布局管理器.通过使用布局管理器,Android应用的图形用户界面具有良好的平台无关性.通常,推荐使用布局管理器来管理组件的分布. ...

  4. Android布局管理器(线性布局)

    线性布局有LinearLayout类来代表,Android的线性布局和Swing的Box有点相似(他们都会将容器里面的组件一个接一个的排列起来),LinearLayout中,使用android:ori ...

  5. 二、Android应用的界面编程(二)布局管理器

    一.线性布局所有布局都可以作为容器类使用,因此可以调用多个重载的addView()向布局管理器中添加组件.实际上,我们完全可以用一个布局管理器嵌套到其他布局管理器中---因为布局管理器也继承了View ...

  6. JAVA布局管理器

    JAVA的界面布局原理:由于Java是跨平台语言,使用绝对坐标显然会导致问题,即在不同平台.不同分辨率下的显示效果不一样.Java 为了实现跨平台的特性并且获得动态的布局效果,Java将容器内的全部组 ...

  7. android开发4:Android布局管理器1(线性布局,相对布局RelativeLayout-案例)

    控件类概述 View 可视化控件的基类 属性名称 对应方法 描述 android:background setBackgroundResource(int) 设置背景 android:clickabl ...

  8. 【Android 应用开发】AndroidUI设计之 布局管理器 - 详细解析布局实现

    写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器 ...

  9. 【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

    问:达叔,你放弃了吗? 答:不,放弃是不可能的,丢了Android,你会心疼吗?如果别人把你丢掉,你是痛苦呢?还是痛苦呢?~ 引导语 有人说,爱上一个人是痛苦的,有人说,喜欢一个人是幸福的. 人与人之 ...

随机推荐

  1. Android——多线程之Handler

    Why? 因为在Android系统中UI操作并不是线程安全的,如果多个线程并发的去操作同一个组件,可能导致线程安全问题.为了解决这一个问题, android制定了一条规则:只允许UI线程来修改UI组件 ...

  2. Hive技术拾遗

    1. SELECT语句可以使用正则表达式做列选择,下面的语句查询除了ds和h 之外的所有列:SELECT `(ds|hr)?+.+` FROM sales 2. LEFT SEMI JOIN的限制是, ...

  3. cas如何去掉HTTPS认证?

    说明:默认情况下HTTP也是可以访问CAS SERVER的,但认证,登陆,退出等操作均没有任何的效果.所以必须作出下面的修改  1.进入WEB-INF\spring-configuration目录 打 ...

  4. BZOJ3157: 国王奇遇记 & 3516: 国王奇遇记加强版

    令\[S_i=\sum_{k=1}^n k^i m^k\]我们有\[\begin{eqnarray*}(m-1)S_i & = & mS_i - S_i \\& = & ...

  5. fragment shader的优化

    ALU: 浮点数精度 选择性降低 shader 指令数 替换一些计算减小指令sqrt, sin, cos, recip 光照 计算用lightmap(用memory sample换计算) vertex ...

  6. unity quaternion vector

    做脚印呢 做了曲面细分和decal两种 先用正交camera生成 高度图 采样uv由pos 从world到camera space生成 unity对tessellation的支持限制还是比较大的 只能 ...

  7. python中在ubuntu中安装虚拟环境及环境配置

    python中在ubuntu中安装虚拟环境及环境配置 1.升级python包管理工具pip pip install --upgrade pip 备注:当你想升级一个包的时候 `pip install ...

  8. linux grep的选项

    grep  -i          关闭大写和小写敏感性 grep      -v    打印全部不包括. . 的行(屏蔽某些条目) grep     -l     打印包括模式的文件名称 grep  ...

  9. Java笔记19:Java匿名内部类

    匿名内部类也就是没有名字的内部类.正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写.但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 例1:不使用匿名内部类来实现抽象方 ...

  10. axios put and patch

    window.axios.patch('https://fir-3-test-2332e.firebaseio.com/notes/' + this.$route.params.key + '.jso ...