第四章 Android布局管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图4-5 EX04_2运行结果
4.4 相对布局RelativeLayout
RelativeLayout相对布局是指在这个容器 内部的子元素们可以使用彼此之间的相对 位置或者和容器间的相对位置来进行定位。 本节将会对表格布局进行介绍,首先介绍 RelativeLayout类的相关知识,然后通过一 个实例说明RelativeLayout的使用方法。
在表格布局中,可以为列设置三种属性: Shrinkable:表示列的宽度可以进行收缩, 以使表格能够适应其父容器的大小。 Stretchable:表示列的宽度可以进行拉 伸,以使填满表格中空闲的空间。 Collapsed:表示列将会被隐藏。 注意:列可以同时具有可拉伸和可收缩标 记是很重要的,这样情况下,该列的宽度 将任意拉伸或收缩以适应父容器。
android:focusable setFocusable(boolean)
android:id
setId(int)
android:minHeig ht
android:minWidth android:padding
设置视图最小宽度度 setPadding(int,int,int 设置上下左右的边距,以像素 ,int) 为单位填充空白。
4.2.1 LinearLayout类简介
LinearLayout通过设置的垂直或水平的 属性值,来排列所有的子元素。所有的子 元素都被堆放在其它元素之后,因此一个 垂直列表的每一行只会有一个元素,而不 管他们有多宽,而一个水平列表将会只有 一个行高(高度为最高子元素的高度加上 边框高度)。LinearLayout保持子元素之间 的间隔以及互相对齐(相对一个元素的右 对齐、中间对齐或者左对齐)。
android:stretch setStretchAllColu 拉伸从0开始的索引列。列号必须用逗 Columns mns(boolean) 号隔开:1, 2, ……。非法或重复的 设置将被忽略。可以通过"*"代替 收缩所有列。注意一列能同时表示 收缩和拉伸。
4.3.2 表格布局实例
本节将通过一个实例来说明TableLayout的使用方法。在实例中, 实现一个计算器的界面。本实例开发步骤如下: 1、创建项目EX04_2 2、修改主Activity的布局文件main.xml。
无论是在代码还是在 XML 布局文件中,单元格必须按 照索引顺序加入表格行。列号从 0开始,如果不为子单元 格指定列号,其将自动增值,使用下一个可用列号。虽然 表格布局典型的子对象是表格行,但实际上可以使用任何 视图类的子类,作为表格视图的直接子对象,视图会作为 一行并合并了所有列的单元格显示。 列的宽度由该列所有行中最宽的一个单元格决定,而 表格的总宽度由其父容器决定。不过表格布局可以通过 setColumnShrinkable()方法或者setColumnStretchable() 方法来标记哪些列可以收缩或拉伸。如果标记为可以收缩, 列宽可以收缩以使表格适合容器的大小。如果标记为可以 拉伸,列宽可以拉伸以占用多余的空间。可以通过调用 setColumnCollapsed()方法来隐藏列。
fill_horizontal
center fill
横向拉伸以填充满容器。
不改变控件大小,放置在容器的正中间。 横向和纵向同时拉伸以填充满容器。
4.2.2 线性布局实例
本节将通过一个实例来说明 LinearLayout的使用方法。在本实例中,在 最上层的纵向线性中嵌套了一个纵向线性 布局和一个横向线性布局。在嵌套的纵向 线性布局中,摆放了一个TextView、 Button控件;在嵌套的横向线性布局中摆放 了两个TextView控件。本实例开发步骤如 下:
4.1 View布局概述
在介绍Android的视图管理之前,首先需 要了解下View类。View类是所有可视化控 件的基类,主要提供控件绘制和事件处理 的方法。前面的实例中所用到的TextView、 EditText、Button均继承自View类。 类关系图显示了View类及其很多派生类 的关系(没有包含View的全部派生类), 如图4-1所示。从图中可以看出ViewGroup 类是一个与布局相关的、View类的子类。
1、创建项目EX04_1。 2、修改主Activity的布局文件main.xml,编 写代码如下:
图4-4 EX04_1运行结果
4.3表格布局 TableLayout
表格布局TableLayout是按照行列来组织子视图 的布局,包含一系列的 TableRow对象,用于定 义行。本节将会对表格布局进行介绍,首先介绍 TableLayout类的相关知识,然后通过一个实例说 明TableLayout的使用方法。 4.3.1 TableLayout类简介 表格布局包含一系列的 TableRow对象,用于 定义行。表格布局不为它的行、列和单元格显示 表格线。每个行可以包含0个以上(包括0)的单 元格; 每个单元格可以设置一个View对象。与行 包含很多单元格一样,表格包含很多列。表格的 单元格即可以为空,也可以像HTML那样跨列。
4.4.1 RelativeLayout类简介
在相对布局中,控件的位置是相对其他 控件或者父容器而言的。在进行设计时, 需要按照控件之间的依赖关系排列,例如 控件B的位置相对于控件A决定,则在布局 文件中控件A需要在控件B的前面进行定义。
属性 android:layout_alignParent Top android:layout_alignParent Bottom android:layout_alignParent Left android:layout_alignParent Right
属性名称
android:backgrou nd
对应方法
描述
setBackgroundResourc 设置背景色/背景图片。可以通过以下两种方法设置 e(int) 背景为透明:"@android:color/transparent"和"@null"。 注意TextView默认是透明的,不用写此属性,但是 Buttom/ImageButton/ImageView想透明的话就得写这 个属性了。 设置是否获得焦点。若有requestFocus()被调用时, 后者优先处理。注意在表单中想设置某一个如 EditText获取焦点,光设置这个是不行的,需要将这 个EditText前面的focusable都设置为false才行。在 Touch模式下获取焦点需要设置 focusableInTouchMode为true。 给当前View设置一个在当前layout.xml中的唯一编号, 可以通过调用View.findViewById()或 Activity.findViewById()根据这个编号查找到对应的 View。不同的layout.xml之间定义相同的id不会冲突。 格式如”@+id/btnName” 设置视图最小高度
常量
top bottom left right center_vertical fill_vertical center_horizontal
描述
不改变控件大小,对齐到容器顶部。 不改变控件大小,对齐到容器底部。 不改变控件大小,对齐到容器左侧。 不改变控件大小,对齐到容器右侧。 不改变控件大小,对齐到容器纵向中央位置。 纵向拉伸以填充满容器 。 不改变控件大小,对齐到容器横向中央位置。
属性名称
设置方法
描述
设置线性布局的朝向,可设 置为horizontal、vertical两种 排列方式 设置线性布局的内部元素的 对齐方式
android:ori setOrientation(int) entation android:gr avity setGravity(int)
1、orientation属性 在线性布局中可以使用orientation属性来 设置布局的朝向,可取的值及说明如下: Horizontal:定义横向布局 Vertical:定义纵向布局 2、gravity属性 在线性布局中可以使用gravity属性设置 控件的对齐方式, 可取的值及说明如表4-3 所示。
第四章 Android布局管理
本章内容:
View布局概述 线性布局 表格布局 相对布局 帧布局 绝对布局 布局的嵌套
对于一个软件,漂亮的用户界面(UI)总能给使用者留下深刻的印 象。对于Android手机应用软件而言,如何从众多的软件中脱颖而出, 用户界面的设计是一个不可忽视的因素。在Android中,View有五大 布局方式:分别是FrameLayout(框架布局)、LinearLayout (线性布局)、 AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、 TableLayout(表格布局),布局方式使用XML语言进行描述。本章将对 Android的五大布局方式进行介绍。
属性名称
相关方法
描述
android:collap seColumns
setColumnCollaps 隐藏从0开始的索引列。列号必须用逗 ed(int,boolean) 号隔开:1, 2,……。非法或重复的 设置将被忽略。
android:shrink Columns
setShrinkAllColu 收缩从0开始的索引列。列号必须用逗 mns(boolean) 号隔开:1, 2, ……。非法或重复的 设置将被忽略。可以通过"*"代替 收缩所有列。注意一列能同时表示 收缩和拉伸。
android:scrollbars
设置滚动条显示。none(隐 藏),horizontal(水平), vertical(垂直)。见下列代码 演示使用该属性让EditText内有 滚动条。但是其他容器如 LinearLayout设置了但是没有效 果。
设置一个文本标签。可以通过 View.getTag()或for with View.findViewWithTag()检索含 有该标签字符串的View。但一 般最好通过ID来查询View,因 为它的速度更快,并且允许编 译时类型检查。
android:paddingBo setPadding(int,int,int 设置底部的边距,以像素为单 ttom ,int) 位填充空白。 android:paddingLe setPadding(int,int,int 设置左边的边距,以像素为单 ft ,int) 位填充空白。 android:paddingRi setPadding(int,int,int 设置右边的边距,以像素为单 ght ,int) 位填充空白。 android:paddingTo setPadding(int,int,int 设置上方的边距,以像素为单 p ,int) 位填充空白。 android:scrollbarSi ze android:scrollbarSt yle 设置滚动条的宽度。 设置滚动条的风格和位置。设 置值:insideOverlay、 insideInset、outsideOverlay、 outsideInset。
android:tag
andLeabharlann Baiduoid:visibility
setVisibility(int)
设置是否显示View。设置值: visible(默认值,显示), invisible(不显示,但是仍然占 用空间),gone(不显示,不 占用空间)
4.2 线性布局LinearLayout
线性布局是最简单的布局之一,它提供 了控件水平或者垂直排列的模型。本节将 会对线性布局进行简单介绍,首先介绍 LinearLayout类的相关知识,然后通过一个 实例说明LinearLayout的使用方法。
图4-1 View类关系图
结合使用View基类方法和子类方法,可 以设置布局、填充、焦点、高度、宽度、 颜色等属性。关于View及其子类的相关属 性,既可以在布局XML文件中使用 “Android:名称空间”来设置,也可以通 过成员方法在代码中进行设置。View类常 用的属性及其对应方法如表4-1所示。