当前位置:首页 >> IT/计算机 >>

android开发常用控件及布局


一、开发概述 开发概述
Android 的控件体系分为三个类别: 1、基本控件 2、布局 3、容器 这三类控件主要分布在两个包中: 1、android.view 提供抽象接口 2、android.widget 提供系统内置的大部分控件 整个系统得控件都继承自 android.view.View ,而布局及容器类继承自 android.view.ViewGroup。 基本控件主要包括 ImageView、ProgressBar、SurfaceView、TextView、EditText 等。 布局 虽然布局跟容器均继承自 android.view.ViewGroup,但并不像 SWT 那样提供了面板+布局 的结构,而是每种 Layout 就是一中特殊的面板,包括 AbsoluteLayout、FrameLayout、 LinearLayout、TableLayout、RelativeLayout 等。 容器 这里的容器是指采用了特定的布局并且提供了行为的控件, 包含 ListView、 GridView、 Gallery、 Spinner 等。

二、android 常用控件
android 常用控件之 TextView、EditView、Button、Menu 、 、 、 示例:一个计算应用程序,输入 2 个数字,点击按钮进行计算两个数的积并且返回结果。 当点击模拟器右侧的 Menu 按钮,在输入界面中显示一个有关于和退出的菜单。 项目运行效果图:

开发步骤: 1、 新建一个 Android 项目 2、 在布局文件中依次添加 EditText、TextView、EditText、Button(一定要按照界面 上控件显示的顺序在布局文件中添加) 3、 再新建一个布局文件用来显示计算的结果;在这个布局文件中添加一个 LinearLayout 和一个 TextView (默认的布局文件中默认就有一个 LinearLayout, 所以不需要手动添加, 新建的布局文件默认为空,所以需要手动添加) 4、 编写第一个 Activity a) 让 Activity 继承 android 的 Activity b) 重写 Activity 的 onCreate()方法 c) 设置这个 Activity 的布局文件 d) 根据控件 id 获得控件对象 e) 设置控件的值,这个值引用的是 string.xml 中的值,所以还需要在 string.xml 文件中 设置(最好是使用 string.xml 中的值,以便实现国际化);这个在布局文件中也能设置; 5、 新建一个 Activity,ResultActivity a) 让 Activity 继承 android 的 Activity b) 重写 Activity 的 onCreate()方法 c) 设置这个 Activity 的布局文件 d) 根据控件 id 获得控件对象 6、 在第一个 Activity 中编写 Button 的监听器

a) 取得两个 EditText 控件的值 b) 创建 Intent 对象 c) 将这两个值存放到 Intent 对象当中 d) 使用 Intent 对象启用 ResultActivity e) 将监听器与 Button 绑定 7、 在第二个 Activity(ResultActivity)中获得 Intent 对象 a) 获得 Intent 对象中保存的值并强制转换成 int 类型 b) 计算两个值的积 c) 设置控件值 8、 在第一个 Activity 中,重写 onCreateOptionsMenu()方法,这个方法是用于添加菜 单中的菜单项,我们添加两个菜单项 9、 再在第一个 Activity 中重写 onOptionsItemSelected()方法,这个方法是当点击菜 单中菜单项时调用。判断,当点击退出的时候调用 finish()方法 android 常用控件之 RadioGroup RadioButton CheckBox Toast 的使用 RadioGroup、RadioButton 的用法 、 RadioGroup 是 RadioButton 的组。一个 RadioGroup 里面可以有多个 RadioButton,但是只能选中其中的一个 RadioButton。 示例:一个应用程序中有两个单选按钮,用于选择男或女。

开发步骤: 1、 新建一个 Android 应用程序 2、 编写 main.xml 文件,添加一个 RadioGroup 标签(还可以设置此标签内的布局方向是水平布局还是垂直布局) 3、 在 RadioGroup 标签内添加两个 RadioButton 4、 编写 Activity,先声明 3 个全局变量,用于接收这三个控件对象 5、 在 onCreate()方法内,根据控件 id 获得这三个对象并赋给相应的变量 6、 编写监听器,监听器实现的是 RadioGroup.OnCheckedChangeListener()提供的接口,需要重写里面的 public void onCheckedChanged(RadioGroup group, int checkedId) 方法,这个方法的第一个参数是用来接收 RadioGroup 对象,第二个参数是用来 接收被选中的 RadioButton 的 ID。 在这个方法里面可以做一系列的判断和操作,比如判断 RadioButton 的 id 是否等于 checkedId,如果等于就可以输出一句话或者使用 Toast 显示提示消息。 7、将监听器绑定到 RadioGroup 上 需要主要的是, a)、这里绑定监听器的是 RadioGroup 对象而不是 RadioButton 对象 b)、这里的监听器实现的是 RadioGroup.OnCheckedChangeListener()提供的接口。 CheckBox 的用法 CheckBox 复选框,相信大家都很了解了,这里就不多说了,直接上示例。 示例:一个应用程序中有三个复选框,可以进行多选操作。

开发步骤: 1、 新建一个 Android 应用程序 2、 编写 main.xml 文件,添加三个 CheckBox 标签 3、 编写 Activity,先声明 3 个全局变量,用于接收这三个控件对象 4、 为每一个 CheckBox 都编写一个监听器,该监听器实现的是 CompoundButton.OnCheckedChangeListener()提供的接口,需要重写里 面的 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)方法,这个方法的第一个参数是用来接收 CompoundButton 对象,第二个参数是用来接收是否被选中, 在这个方法里面可以做一系列的判断和操作,比如判断某个 CheckBox 有没有被选中 5、 将监听器绑定在对应的 CheckBox 上 Toast 的用法 Toast 主要用于提示信息,用起来很方便,一行代码就 OK 了。 1、 创建 Toast 对象 makeText(Context context, CharSequence text, int duration); 通过调用这个方法,返回一个 Toast 对象。 第一个参数是上下文对象,通常是你的应用程序或者 Activity 对象, 第二个参数就是要显示的文本内容,可以格式化文本 第三个参数是持续多长时间来显示消息,有两个常量:LENGTH_SHORT 或者 LENGTH_LONG 2、 调用 show()方法显示。 Toast toast = Toast.makeText(RadioTest.this, "female", Toast.LENGTH_SHORT); toast.show(); 在前面的 RadioButton 示例中,当选中"女"的单选框时调用 Toast。

有一点需要注意的是: RadioGroup 的监听器实现是 RadioGroup.OnCheckedChangeListener()提供的接口,而 CheckBox 的监听器实现的是 CompoundButton.OnCheckedChangeListener()提供的接口 为什么 RadioGroup 和 CheckBox 实现的不是同一个接口呢? 原因大概是因为: 在 RadioGroup.OnCheckedChangeListener()里面的 onCheckedChanged(RadioGroup group, int checkedId) 方法它里面需要的是一 个 RadioGroup 参数,而 RadioGroup 并不是 CompoundButton 的子类,所以它只能再重新写一个这样的接口。 而 CheckBox 它本身就是 CompoundButton 的子类,所以它可以直接使用这个接口。 android 常用控件之 ProgressBar、ListView 、 ProgressBar(进度条)的使用 (进度条) 示例:一个应用程序有 2 个 ProgressBar,让进度条显示进度。 开发步骤: 1、 新建一个 android 项目 2、 在 main.xml 布局文件中先添加 1 个 ProgressBar 控件(firstProgressBar),设置这个进度条是以水平方式展示的,然后再设置这个控 件为不显示(这里暂时不显示,我们在后面的程序中写代码将这个控件设置为显示) 3、 在 main.xml 布局文件中再添加 1 个 ProgressBar 控件(secondProgressBar),设置该标签的显示样式为默认的(是一个转动的圆圈), 然后再同样设置这个控件暂时为不显示 4、 在 main.xml 布局文件中再添加一个 Button 控件 5、 在 Activity 中编写代码,先获得这 2 个 ProgressBar 和 Button 对象 6、 然后编写一个监听器,设置进度条的进度,当每点击一次 Button,进度则增加 10 7、 将监听器绑定到 Button 对象上 下图为 main.xml 布局文件的片段:

最后项目实

现的效果为:

ListView 的使用 ListView 的使用相对于之前使用到的一些控件而言要复杂一点,在这里呢,同样是通过一个示例来讲解。 示例:一个应用程序有一个 ListView,显示三行信息。 最后项目实现的效果为:

开发步骤: 1、 新建一个 Android 应用程序 2、 在布局文件中再添加一个 LinearLayout(应用程序新建的时候默认的布局文件里就已经有了一个 LinearLayout,现在再添加一个),设 置这个 LinearLayout 的一些属性。 3、 在 LinearLayout 中添加一个 ListView,并设置一些属性。

4、 新建一个布局文件,这个布局文件呢,是用来布局和显示 ListView 里面的内容的(我 是这样理解的, 不知道大家能不能理解哈) 先在这个布局文件中添加一个 LinearLayout, 。 然后在 LinearLayout 中添加两个 TextView,表示显示两列数据(如果需要显示多列数据 的话当然就是添加多个 TextView 了)。
Xml 代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="1dip" android:paddingBottom="1dip" android:paddingLeft="10dip" android:paddingRight="10dip" > <TextView android:id="@+id/user_name" android:layout_width="180dip" android:layout_height="30dip" android:textSize="10pt" android:singleLine="true" /> <TextView android:id="@+id/user_ip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="10pt" android:gravity="right" /> </LinearLayout>

5、 编写 Activity a) 首先要注意的是,这个 Activity 他继承的不是 Activity,而是 ListActivity。 b) 创建一个 ArrayList,里面存放的是 HashMap,而 HashMap 的键值对都是 String 类 型。 c) 分别往 3 个 HashMap 中存储值 d) 将 3 个 HashMap 添加到 ArrayList 中 e) 创建适配器 f) 绑定到适配器 g) 编写行的点击事件
Java 代码 package android.listview; import java.util.ArrayList; import java.util.HashMap; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import android.widget.ListView; import android.widget.SimpleAdapter; //注意:这里继承的是 ListActivity,而不是 Activity public class ListViewTest extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 创建一个 ArrayList,ArrayList 里面存放的是 HashMap,而 HashMap 的键值对都是 String 类型

ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>(); HashMap<String, String> map1 = new HashMap<String, String>(); HashMap<String, String> map2 = new HashMap<String, String>(); HashMap<String, String> map3 = new HashMap<String, String>(); // 分别往 3 个 HashMap 中存储值 map1.put("user_name", "zhangsan"); map1.put("user_ip", "192.168.0.1"); map2.put("user_name", "lisi"); map2.put("user_ip", "192.168.0.2"); map3.put("user_name", "wangwu"); map3.put("user_ip", "192.168.0.3"); // 将 3 个 HashMap 添加到 ArrayList 中 list.add(map1); list.add(map2); list.add(map3); //创建适配器 //第一个参数 Content:上下文 //第二个参数 List<? extends Map<String, ?>>:ArrayList 对象,ArrayList 里面存放的是 HashMap,而 HashMap 的键值对都是 String 类型 //第三个参数 int resource:内容显示的布局文件 //第四个参数 String[] from:被添加到 ArrayList 中的 HashMap 中 key 的名称,要显示的列 //第五个参数 int[] to:内容显示的布局文件中,显示内容的控件 id SimpleAdapter listAdapter = new SimpleAdapter(this, list, R.layout.user, new String[] { "user_name", "user_ip" }, new int[] { R.id.user_name, R.id.user_ip }); //绑定到适配器。 setListAdapter(listAdapter); } /** * 列表当中一行的点击事件 * ListView:ListView 对象本身 * View:被选中的那一行的 View 对象 * position:被选中的那一行的位置 * id:被选中的那一行的 id */ @Override protected void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); //打印出被选中的那一行的位置和 id,计数都是从 0 开始 System.out.println("-------------"+position); System.out.println("-------------"+id); } }

三、android 布局
android 有多种布局格式,这里只是详细介绍常用的五种格式。RelativeLayout、 LinearLayout、FrameLayout、AbsoluteLayout、TableLayout.。其中 LinearLayout 和 RelativeLayout 是最常用的格式,他们可以通过 xml 配置文件进行布局。可以查看相 关 api: http://developer.android.com/reference/android/widget/package-summary.h tml 我这里这是简单介绍这五种格式.

1、FrameLayout 、

最简单的布局格式, 他可以防止任何空件, 但是都只能罗列到左上角, 不能进行复杂的布局。

可以明显的看到两个视图重叠到了一起。这种布局很少用到。 2、LinearLayout 、

LinearLayout 以你为它设置的垂直或水平的属性值,来排列所有的子元素。所有的子元素 都被堆放在其它元素之后,因此一个垂直列表的每一行只会有 一个元素,而不管他们有多 宽,而一个水平列表将会只有一个行高. 可以进行复杂的布局的编排。他是线性的布局。

它可以排出相当复杂的界面,同时可以嵌套使用,所以大多数选择他来进行布局。 3、AbsoluteLayout 、

AbsoluteLayout 可以让子元素指定准确的 x/y 坐标值,并显示在屏幕上。 AbsoluteLayout 没有页边框,允许元素之间互相重叠(尽管不推荐)。他是绝对坐标, 所以在实际中不提倡使用。

4、RelativeLayout 、

RelativeLayout 允许子元素指定他们相对于其它元素或父元素的位置(通过 ID 指定)。 因此,你可以以右对齐,或上下,或置于屏幕中央的形式来 排列两个元素。元素按顺序排 列,因此如果第一个元素在屏幕的中央, 那么相对于这个元素的其它元素将以屏幕中央的相 对位置来排列。这个是相对于 AbsoluteLayout 的,采用的相对坐标,所以在实际中比较 常用。

5、TableLayout 、

TableLayout 将子元素的位置分配到行或列中。一个 TableLayout 由许多的 TableRow 组成, 每个 TableRow 都会定义一个 row 。 TableLayout 容器不会显示 row 、 cloumns 或 cell 的边框线。每个 row 拥有 0 个或多个的 cell ;和 html 中的 table 查不多少。在 实际中也经常使用。

Android 布局详解

之前对于 XML 的布局方法一直看着不爽,感觉很乱的样子,但时间长了我渐渐发现,这种 程序代码与界面布局完全分开的方法非常顺手,该布局的地方都到 main.xml 里去写,甚 至界面中显示的字符串都可以集中到 string.xml 文件中, 而主程序的".java"文件中则完全 用于编写代码,思路非常清晰。 首先按照程序的目录结构大致分析: res/layout/ 这个目录存放的就是布局用的 xml 文件,一般默认为 main.xml res/values/ 这个目录存放的是一堆常量的 xml 文件 res/drawable/ 存放的是一些图片什么的,当然图标也在这里 下面主要对 layout 下的 xml 文件做个介绍,顺便也把布局的方法总结一下: 文件的开头: <?xml version="1.0" encoding="utf-8"?> 这是在说明 xml 版本及字符编码 紧接着到了关键的部分: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> </LinearLayout> 其中开头的"LinearLayout"是布局的方式,可以有很多种,最常用的应该就是 Linear 了, 其他的布局方法等下在后面总结。 接着 android:layout_width(height)="wrap_content"是在设置这部分布局的宽高,也 可以是绝对值,当然设置为绝对值时要标上单位。 在<LinearLayout ...>和</LinearLayout>就之间可以添加控件了, 比如要添加一个名字 为 btn 的 Button 控件,并且 Button 上显示的文字是"Test!",可以这样写: <Button id="@+id/btn" android:text="Test!" android:layout_width="wrap_content"

android:layout_height="wrap_content" /> 开头 id 后面的就是控件名称, 在用于添加事件 Listener 时会用到, 而下几行的 android:xxx 就是设置控件的属性了,这些属性在 Android 的文档中都有,不需要特别去记,一般现查 就可以了。 有一点要说明的是,布局方法可以嵌套,有点像 java 中的 Container,可以非常方便的把 界面"堆"出来。 布局方式的简单说明: 查了 Android 文档发现布局确实很多,只列出两个我自己认为较常用的: LinearLayout 线性的布局方式,要么上下,要么左右的添加控件,很常用; GridView 中文翻译过来是网格布局,控件按照顺序依次填到每个格子里就好了,出来的界 面会很整齐,较常用.


相关文章:
Android开发日志—常用控件篇(android简介和容器控件)
Android开发日志—常用控件篇(android简介和容器控件)_计算机软件及应用_IT/计算机...(相对布局) 常用属性: 第一类:属性值为 true 或 false android:layout_center...
android常用控件大全
里面可以放多个控件,不过控件的位置都是相对位置 (Android 界面布局好像还可以直接引用一些 view,如 ScrollView 等) 常用控件: 1,EditText 主要函数:setText/...
Android 控件布局常用属性
Android 控件布局常用属性 RelativeLayout 用到的一些重要的属性: 第一类:属性值为 true 或 false android:layout_centerHrizontal 水平居中 android:layout_center...
Android各种控件详解
Android 用户界面开发 常用控件应用: 常用控件应用: 1:文本框(TextView) :文本框( ) (1)在 Acitivity 中使用 (2)布局文件的格式: 2:列表(ListView) :列表(...
实验2 android的界面设计(控件与布局)
实验2 android 的界面设计(控件与布局) 学时:4 学时 一、实验目的: 1、 了解 Android 编程原理 2、 掌握界面控件设计 3、了解和熟悉常用控件的使用、界面布局...
android常用控件介绍
android常用控件介绍_计算机软件及应用_IT/计算机_专业...(R.layout.main); //从 main.xml 布局中获得 ...如果你是搞.net 开发你 大可以把 Cursor 理解成 ...
android常用系统界面控件使用大合集
的一个 Demo 和大家详细介绍一个 Android 开发中遇到的一些常用系统控件 的使用...22. 23. } //把这个 view 加入到布局当中 ll.addView(textView); super....
Android中常用的布局方式详解_图文
Android常用布局方式详解_计算机软件及应用_IT/计算机_专业资料。海文国际 ...(垂直), 线性布局中所有的控件都是按照 horizontal 或者 Vertical 属性按自动...
android常用基本控件
1. TextView TextView 是 android 程序开发中最常用控件之一,它一般使用在...为 Button 注册监听有两种方法,一种是在布局文件中,为 Button 控件设置 OnCi...
Android控件大全以及各布局空间的使用方式
控件讲解 ? ? ? 在 Windows 下搭建 Android 开发环境 Android 项目的目录结构...常用的有 top, bottom, left, right, center 等,详见文档 --> <Linear...
更多相关标签: