Android教程学习1-创建一个简单的用户界面
2013-10-16 12:46
519 查看
学习内容:
使用线性布局添加一个文本输入框
增加字符串资源
添加按钮
利用权重值让输入框充满整个屏幕宽度
创建一个简单的用户界面
Android的图形用户界面使用View和ViewGroup的层级类进行创建。View类是通用的UI窗体小部件,比如按钮或者文本框,而ViewGroup
是用于定义子View如何布局的不可视容器,比如网格(grid)布局和垂直列表(vertical
list)布局。
Android提供了对应于View和ViewGroup子类的XMl查询表,你可以在XML里使用层级视图元素创建自己的UI
![](http://developer.android.com/images/viewgroup.png)
图1:展示了ViewGroup类在布局里形成的分支并且包含View类
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
使用线性布局
在资源目录res/layout中打开activity_main.xml文件(Android项目新建时都默认包含此文件)注意:在默认情况下,activity_main.xml中包含一个RelativeLayout布局和TextView文本框。首先,需要删除TextView文本框,把RelativeLayout布局
替换为LinearLayout布局,然后添加android:orientation属性并设置为"horizontal".
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout>
LinearLayout布局是一个View容器(ViewGroup的一个子类),用于水平放置或者垂直放置子视图的部件,由属性android:orientation来设定方向。线性
布局里的子布局按照XML里设定的顺序显示在屏幕上。
另外的两个属性android:layout_width和android:layout_height,对于所有的部件都需要对这两个属性进行设置以指定它们的大小。
在这里因为线性布局是整个视图的根布局,所以对于宽和高都应该是充满整个屏幕的,指定为fill_parent。
注意:从Android2.2开始,为了更好的使用,fill_parent被改为match_parent。因为当我们把一个子部件设置为fill_parent之后,该部件不是占有同等级
部件剩余的空间,而是和同等级部件重叠在一起。相反,使用match_parent则不会出现重叠的现象。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
添加一个文本输入框
在线性布局里,添加一个元素就可以创建一个用户可编辑的文本框,EditText类属于View的一个用于展示可编辑的文字的子类。<EditText android:id="@+id/edit_message" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" android:hint="@string/about" /> <!-- android:hint 没有输入之前的提示内容 -->
关于一些属性的说明:
Android : id
这里定义的是View的唯一标识符,你可以在程序的代码里进行引用,你可以对这个类进行读和修改的操作。
当你想从XML里使用资源类的时候必须使用"@"符号,紧随"@"之后的是资源的类型(这里指id),一个斜杠,然后就是资源的名字。"+"号只是当你第一次定义资源ID的
时候需要。这里是告诉SDK此资源ID需要被创建出来。在应用程序被编译之后,SDK就可以直接使用ID值edit_message在项目gen/R.java文件中创建一个新的标识符,
这个标识和就和EditText关联起来了。一旦资源ID被创建了,其他资源如果引用这个ID就不再需要"+"号了。"+"只有在定义一个新的资源ID的时候才需要,而在定义诸如
string和layouts这些有实际内容的资源是则不需要。
添加一个按钮
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button_send" />
宽和高被设置为"wrap_content:,这时按钮占据的大小就是按钮里文本的大小。这个按钮不需要指定android:id的属性,因为在Activity代码里不被引用到。
让输入框充满整个屏幕的宽度
LinearLayout使用权重值的属性android:layout_weight来设置部件的大小。可以根据每一个部件所占的空间来指定权重值的大小,它的总数是由同等级的部件决定的。
例如某饮料的配方:“两份伏特加酒 一份咖啡利口酒”, 意思就是这个饮料中伏特加酒占了三分之二。例如,你设置一个View的权重是2,另一个View的权重是1,那么总数
就是3,这时第一个View占据2/3的空间,第二个占1/3的空间。如果再加入第三个View,权重设为1,那么第一个View会占1/2的空间,剩余的被另外2个View平凡。
对于所有的View默认的权重值是0,如果你只设置了一个View的权重大于0,那么这个View将占据去别的View本身所占据的空间的多有剩余空间。
因此这里设置EditView的权重为1,保持button没有权重的状态,是EditView能够占据除了按钮之外的所有空间。
<EditText android:layout_weight="1" android:layout_width="0dp" ... />
将EditView的宽度设置为0dp。如果设置为"wrap_content"作为宽度,系统需要自己去计算这个部件所占有的宽度,而此时因为设置了权重,所以系统自动会占据剩余空间,
EditView的宽度最终成了不起作用的属性。
运行结果:
参考:http://wiki.eoe.cn/page/Building_a_Simple_User_Interface
http://developer.android.com/training/basics/firstapp/building-ui.html
相关文章推荐
- Android官方教程翻译(3)——创建一个简单的用户界面
- Android官方教程翻译(3)——创建一个简单的用户界面
- 从零学Android(二)、创建一个简单的用户界面
- android开发实战系列(06)-- 创建一个简单的用户界面
- maven 学习笔记(二)创建一个简单的 eclipse+android+maven 工程
- Retrofit学习教程(1)-创建一个Android客户端
- [Andriod官方训练教程]创建你的第一个App之创建一个简单的用户界面
- [Andriod官方训练教程]创建你的第一个App之创建一个简单的用户界面
- Android Training - 创建一个简单的用户界面
- Android学习之四:创建一个简单程序
- Android JNI(NDK)简单学习(环境搭建,创建一个JNI项目的基本流程)
- maven 学习笔记(二)创建一个简单的 eclipse+android+maven 工程
- 创建一个简单的 iOS 5 iPhone App 教程(2/3)
- 创建你的第一个安卓应用3 - 第三课 - 建立一个简单的用户界面
- 简单教程:如何创建一个基于金山卫士界面库的工程
- FlashCom学习第二课:创建一个使用视频的简单的Flash动画
- 跟Google学习Android开发-起始篇-用碎片构建一个动态的用户界面(3)
- 一个简单的demo学习Android远程Service(AIDL的使用)
- android基础学习之一个简单的歌词滚动软件的实现
- 使用 ADD-ON SDK 开发 基于 Html JQuery 和 CSS 的 firefox 插件入门教程1: 创建一个简单的 Add-on