相对布局:RelativeLayout
RelativeLayout也是非常常用的布局,能够精确对控件的位置进行网格对齐,可以设置在控件与其他控件的相对位置,以及控件在容器中的位置。缺省控件的位置为最上面还最左边。下面结合一个例子来进行解说。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" > <!-- 测试:设置wrap_content也会占据满屏或者fill parent -->
<!--摆放第一个控件:将UserName的TextView放置在最上方,实际上这也是缺省的位置,仅测试属性语法 -->
<TextView android:id="@+id/userNameLb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="UserName:" />
<!-- 第二个控件:将EditText放置在第一个控件的右边,上下的位置,缺省至于最上 -->
<EditText android:id="@+id/userNameText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/userNameLb1" />
<!-- 第三个控件:由于EditText所占的高度比TextView要大,所以第三个控件,我们放在第二个控件之下,缺省地放置在最左边 -->
<TextView android:id="@+id/pwdLb1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/userNameText"
android:text="Password:" />
<!-- 第四个控件:放置在第二个控件之下,以及第三个控件右边。如果我们只设置了放置在第三个控件右边,会发现,该控件和第二个控件出现重叠,因为缺省将控件放置在最上方 -->
<EditText android:id="@+id/pwdText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/userNameText"
android:layout_below="@id/userNameText" />
<!-- 测试:控件在其他控件的相对位置 -->
<TextView android:id="@+id/pwdCriteria"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/pwdText"
android:text="Password Criteria ...." />
<!-- 测试:控件在容器中的相对位置 -->
<TextView android:id="@+id/disclaimerLb1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Use at your own risk...... 风险自负"/>
</RelativeLayout>
相互位置校准
在例子中,我们发现由于TextView和EditView的高度不同,显得不够美观,我们希望将TextView的位置稍微下调,底部基准位和EditView相同。
这里比较特别之处是我们希望第三个控件以第四个控件为基准进行对齐,这是第四个控件我们尚未进行描述,因此我们需要首先在R.java中加入第四个控件的ID,用了@+id/的方式。由于第四个控件的ID具体值已经在之前描述,所以可以使用@id/,但是这里我们仍可以是用@+id/,因+的含义是,如果不存在则增加,如存在则使用。
使用ADT的视图工具
在上图中,我们发现由于第一个控件“UserName:”和第二个控件“Password:”的文字长度不同,导致两个EditText并不对齐。在布局中,我们可以通过ADT的视图工具来查看对齐情况,我们也可以用ADT视图工具直接进行调整。
通过鼠标对控件的拉伸进行调整,检查xml文件,对于第四个控件,加上了android:laytou_alignLeft的属性。
<EditText android:id="@id/pwdText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/userNameText"
android:layout_below="@id/userNameText" />
相关链接: 我的Android开发相关文章
【转】Pro Android学习笔记(二六):用户界面和控制(14):RelativeLayout的更多相关文章
-
【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET
目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...
-
【转】 Pro Android学习笔记(六二):Preferences(6):header
目录(?)[-] 代码实现 header xml文件 在前面的例子,我们主要学习了PreferenceScreen的xml如何写,preference有哪些类型.在代码中,我们为了不提示warning ...
-
【转】 Pro Android学习笔记(六八):HTTP服务(2):HTTP POST
目录(?)[-] 找一个测试网站 HTTP POST小例子 上次学习了HTTP GET请求,这次学习一下HTTP POST. 找一个测试网站 小例子好写,但要找个测试网站就有些麻烦,一下子无从入手,都 ...
-
【转】 Pro Android学习笔记(六九):HTTP服务(3):HTTP POST MultiPart
目录(?)[-] 建立测试环境 开发环境导入第三方JAR HTTP Post Multipart小例子 HTTP POST不仅可以通过键值对传递参数,还可以携带更为复杂的参数,例如文件.HTTP Po ...
-
【转】 Pro Android学习笔记(六五):安全和权限(2):权限和自定义权限
目录(?)[-] 进程边界 声明和使用权限 AndroidManifestxml的许可设置 自定义权限 运行安全通过两个层面进行保护.进程层面:不同应用运行在不同的进程,每个应用有独自的user ID ...
-
【转】 Pro Android学习笔记(六三):Preferences(7):代码控制首选项
[-] 代码实现preference 利用preference保存状态 DialogPreference 代码实现preference View可以不通过xml进行设置,有代码直接进行设置,首选项pr ...
-
【转】 Pro Android学习笔记(六十):Preferences(4):MultiSelect List Preference
目录(?)[-] XML文件 在设备中保存 读出信息 ListPreference提供单选列表,我们可以通过CheckBoxPreference提供多选列表.此外,Android在3.0后提供Mult ...
-
【转】 Pro Android学习笔记(*):安全和权限(1):签发apk
目录(?)[-] Android安全模型 数字证书签发 Debug的keystore 生产unsigned的apk 为apk进行证书签发 align安装包 使用Export Wizard生成签发的ap ...
-
【转】Pro Android学习笔记(六):了解Content Provider(中)
Content Provider的架构 Authority类似web中的域名,每个content provider会通过AndroidManifest.xml向系统注册authority,如下.其中n ...
-
【转】 Pro Android学习笔记(八二):了解Package(1):包和进程
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...
随机推荐
-
单链表的C++实现(采用模板类)
采用模板类实现的好处是,不用拘泥于特定的数据类型.就像活字印刷术,制定好模板,就可以批量印刷,比手抄要强多少倍! 此处不具体介绍泛型编程,还是着重叙述链表的定义和相关操作. 链表结构定义 定义单链表 ...
-
asp.net mvc4使用百度ueditor编辑器
原文 http://www.cnblogs.com/flykai/p/3285307.html 已测试 相当不错 前言 配置.net mvc4项目使用ueditor编辑器,在配置过程中遇见了好 ...
-
eclipse的安装
eclipse的安装只要记住一条就好,那就是eclipse安装的时候版本要一致(就是,安装eclipse 32位的,同时要配套jdk 32位,tomcat 32位的),同理64位的也是一样的. 本人安 ...
-
转--object-C 与lua使用wax交互
[51CTO独家译文]2011年6月的编程语言排行榜Lua语言一军突起,一举进入前十名.这与一年前苹果决定在iOS系统上使用Lua语言密不可分.但是,你了解如何用Lua语言在iOS上开发应用吗?51C ...
-
201521123059 《Java程序设计》第十四周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 1.关系型数据库 --建立表格时表中一列中的数据类型必须一致.关系表中的行必须是唯一的,列是不可分的,某些行的某 ...
-
No bean named &#39;sessionFactory&#39; is defined
1.错误描述 严重:Servlet service() for servlet default threw exception . org.springframework.beans.factory. ...
-
Java WebSocket HttpSession与WebSocket Session的关联
当HttpSession中止(通过显示地失效或超时)时,Web容器会把HttpSession属性从HttpSession中清除. javax.servlet.http.HttpSessionBindi ...
-
Android之移动热修复
阿里云推出了移动热修复服务,听说这个服务傻瓜式接入,性能相对较好,对新技术比较好奇的我决定尝试一下. 1.首先,需要开通这个服务,创建应用 2.然后,在项目中接入服务.按照文档所述 第一步:gradl ...
-
012 HDFS API 文件读写代码演示
一:准备工作 1.新建class类 2.开启HDFS服务 3.将配置文件拷贝进resources路径 方便了Configuration的读取配置. 二:读出HDFS文件系统中的文件到控制台 4.读出在 ...
-
windows SysinternalsSuite
procdump -ma -i c\dumps 捕获系统所有程序的崩溃 SysinternalsSuite autoruns是个什么鬼