文档章节

第六讲:用户界面 View(二)

程序袁_绪龙
 程序袁_绪龙
发布于 2014/08/25 11:16
字数 1367
阅读 15
收藏 0

3、绝对布局 AbsoluteLayout

绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差。

下面我们举一个例子看看:例子里的机器人图片大小是250X250,可以看到我们使用android:layout_x和android:layout_y来指定子元素的纵横坐标。

<?xml version=”1.0″ encoding=”utf-8″?>
<AbsoluteLayout android:id=”@+id/AbsoluteLayout01″
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
xmlns:android=”http://schemas.android.com/apk/res/android”
android:background=”#fff”>

<ImageView
android:src=”@drawable/android”
android:layout_y=”40dip”
android:layout_width=”wrap_content”
android:layout_x=”35dip”
android:id=”@+id/ImageView01″
android:layout_height=”wrap_content”>
</ImageView>
<TextView
android:layout_height=”wrap_content”
android:layout_width=”fill_parent”
android:id=”@+id/TextView01″
android:text=”Android2.2 学习指南”
android:textColor=”#0f0″
android:textSize=”28dip”
android:layout_y=”330dip”
android:layout_x=”35dip
“>
</TextView>
<TextView
android:layout_height=”wrap_content”
android:layout_width=”fill_parent”
android:id=”@+id/TextView02″
android:text=”图文并茂,理论清晰,操作性强”
android:textColor=”#333″
android:textSize=”18dip”
android:layout_y=”365dip”
android:layout_x=”35dip
“>
</TextView>
</AbsoluteLayout>

让我们看一下在WQVGA的模拟器下的显示效果:

image

再在WVGA800的模拟器下看看显示效果:

image

Tip: 在绝对定位中,如果子元素不设置layout_x和layout_y,那么它们的默认值是0,也就是说它会像在FrameLayout一样这个元素会出现在左上角。

4、相对布局 RelativeLayout

相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。

下面我们用相对布局再做一次上面的例子,首先放置一个图片,其它两个文本分别相对上一个元素定位:

<?xml version=”1.0″ encoding=”utf-8″?>

<RelativeLayout android:id=”@+id/RelativeLayout01″
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”#fff”
xmlns:android=”http://schemas.android.com/apk/res/android”>

<ImageView android:id=”@+id/ImageView01″
android:src=”@drawable/android”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:layout_marginTop=”40dip”
>
</ImageView>
<TextView
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/TextView01″
android:text=”Android2.2 学习指南”
android:textColor=”#0f0″
android:textSize=”28dip”
android:layout_below=”@id/ImageView01″
android:layout_centerHorizontal=”true”

android:layout_marginTop=”10dip”>
</TextView>
<TextView
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/TextView02″
android:text=”图文并茂,理论清晰,操作性强”
android:textColor=”#333″
android:textSize=”18dip”
android:layout_below=”@id/TextView01″
android:layout_centerHorizontal=”true”
android:layout_marginTop=”5dip
“>
</TextView>
</RelativeLayout>

让我们看一下在WQVGA的模拟器下的显示效果:

image

再看一下在更大屏幕(WVGA800)模拟器上的显示效果:

image

从上图可以看到界面效果基本保持了一致,而不是像绝对定位一样龟缩在左上角;同学们看到自动缩放的功能是采用了dip做单位带来的好处。关于dip,不懂的同学可以看我在开发小知识里写的专门的文章。

下面介绍一下RelativeLayout用到的一些重要的属性:

第一类:属性值为true或false
android:layout_centerHrizontal                                           水平居中
android:layout_centerVertical                                            垂直居中
android:layout_centerInparent                                           相对于父元素完全居中
android:layout_alignParentBottom                                     贴紧父元素的下边缘
android:layout_alignParentLeft                                          贴紧父元素的左边缘
android:layout_alignParentRight                                        贴紧父元素的右边缘
android:layout_alignParentTop                                          贴紧父元素的上边缘
android:layout_alignWithParentIfMissing                            如果对应的兄弟元素找不到的话就以父元素做参照物

第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below                          在某元素的下方
android:layout_above                          在某元素的的上方
android:layout_toLeftOf                       在某元素的左边
android:layout_toRightOf                     在某元素的右边

android:layout_alignTop                      本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft                      本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom                 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight                    本元素的右边缘和某元素的的右边缘对齐

第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom              离某元素底边缘的距离
android:layout_marginLeft                   离某元素左边缘的距离
android:layout_marginRight                 离某元素右边缘的距离
android:layout_marginTop                   离某元素上边缘的距离

我们再把上面的例子重新做一遍,这一次多放一些属性在里面,大家试验一下:

<?xml version=”1.0″ encoding=”utf-8″?>

<RelativeLayout android:id=”@+id/RelativeLayout01″
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”#cfff” 色彩的设置是argb,第一个c是透明度
xmlns:android=”http://schemas.android.com/apk/res/android”>

<ImageView android:id=”@+id/ImageView01″
android:src=”@drawable/android”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_marginTop=”40dip”
android:layout_centerHorizontal=”true”>
</ImageView>

<TextView
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/TextView01″
android:text=”Android2.2 学习指南”
android:textColor=”#0f0″
android:textSize=”28dip”
android:layout_below=”@id/ImageView01″
android:layout_centerHorizontal=”true”
android:layout_marginTop=”10dip”>
</TextView>

<TextView
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/TextView02″
android:text=”图文并茂,理论清晰,操作性强”
android:textColor=”#333″
android:textSize=”18dip”
android:layout_below=”@id/TextView01″
android:layout_centerHorizontal=”true”
android:layout_marginTop=”5dip”>
</TextView>

<TextView
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/TextView03″
android:text=”alignTop”
android:textColor=”#333″
android:textSize=”18dip”
android:layout_alignTop=”@id/ImageView01″  和ImageView01上边缘对齐
android:layout_centerHorizontal=”true”>
</TextView>

<TextView
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/TextView04″
android:text=”alignLeft”
android:textColor=”#333″
android:textSize=”18dip”
android:layout_alignLeft=”@id/ImageView01″
android:layout_centerHorizontal=”true”>
</TextView>

<TextView
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/TextView05″
android:text=”alignRight”
android:textColor=”#333″
android:textSize=”18dip”
android:layout_alignRight=”@id/ImageView01″
android:layout_centerHorizontal=”true”>
</TextView>

<TextView
android:layout_height=”wrap_content”
android:layout_width=”wrap_content”
android:id=”@+id/TextView06″
android:text=”alignBottom”
android:textColor=”#333″
android:textSize=”18dip”
android:layout_alignBottom=”@id/ImageView01″
android:layout_centerHorizontal=”true”>
</TextView>
</RelativeLayout>

image

好吧今天就讲到这里。

本文转载自:http://android.yaohuiji.com/archives/234

共有 人打赏支持
程序袁_绪龙
粉丝 97
博文 242
码字总数 66750
作品 0
普陀
程序员
ZigBEE

手把手教你学Zigbee第一讲:http://www.tudou.com/programs/view/fQattIYSwBo/ 手把手教你学Zigbee第二讲:http://www.tudou.com/programs/view/7-dIvUgk2kg/ 手把手教你学Zigbee第三讲:htt...

GIFCOOL
2016/09/02
33
0
Android入门第七篇之ListView (二)

本文来自http://blog.csdn.net/hellogv/ Android入门第六篇之ListView (一) ,讲的是如何制作一个具有两行文本的 自定义控件 ,作为ListView的Item的使用方法。这篇接下来也是围绕ListView和...

晨曦之光
2012/03/14
137
0
cyzhang/docker-training

cSphere Docker 实训课程 课程安排 第一讲 Docker 实战之入门以及 Dockerfile 第二讲 Docker 实战之 Registry 以及持续集成 第三讲 Docker 实战之监控管理以及日志管理 第四讲 Docker 实战之...

cyzhang
2016/01/28
0
0
Android中的Menu功能菜单-OptionsMenu[选项菜单]

Android中的菜单是用户界面中最常见的元素,使用也很频繁,在Android中,菜单被分为3种,分别为选项菜单(OptionsMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu)。本文先讲选项菜单(Option...

鉴客
2011/11/14
2.2K
0
深入Android开发之--Android事件模型

前言: 一般我们处理事件,都是针对某一个View来处理了,要么是添加onTouchListener监听器,要么继承View然后重写View#onTouchEvent, 甚至不用重写,只要使用Widget自己的监听函数 ,或者GestureDe...

李海珍
2013/12/24
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
33分钟前
0
0
Confluence 6 数据库和临时目录

数据库 所有的其他数据库,包括有页面,内容都存储在数据库中。如果你安装的 Confluence 是用于评估或者你选择使用的是 Embedded H2 Database 数据库。数据库有关的文件将会存储在 database...

honeymose
47分钟前
1
0
day62-20180820-流利阅读笔记

1.今日导读 2.带着问题听讲解 3.新闻正文(中英文对照) 4.重点词汇 5.拓展内容

aibinxiao
57分钟前
0
0
分布式锁实现及对比

一、问题介绍 日常工作中很多场景下需要用到分布式锁,例如:任务运行(多个节点同一时刻同一个任务只能在一个节点上运行(分片任务除外)),交易接受(前端交易请求发送时,可能由于两次提...

yangjianzhou
今天
3
0
【AI实战】快速掌握TensorFlow(二):计算图、会话

在前面的文章中,我们已经完成了AI基础环境的搭建(见文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基础环境),以及初步了解了TensorFlow的特点和基本操作(见文章:快速掌握...

雪饼
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部