Microsoft Word - 第5章.doc

Similar documents
I

修改版-操作手册.doc

Cybozu Garoon 3 管理员手册

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

世华财讯模拟操作手册

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

登录、注册功能的测试用例设计.doc

Microsoft Word - 第3章.doc

4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页,

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

第2章 数据类型、常量与变量

教师上报成绩流程图

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

云信Linux SSH认证代理用户手册

《C语言基础入门》课程教学大纲

深圳市新亚电子制程股份有限公司

四川省农村义务教育学生


国债回购交易业务指引

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 ( 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 ( 首 页

操作手册

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

徐天宏:《基因天堂》.doc

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化? 五 如 何 向 教 师 发 送 通 知? 六

引言

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

目 录 办 公 OA 介 绍... 3 办 公 OA... 4 一. 收 件 箱 发 布 信 件 查 看 个 人 信 件... 7 二. 公 共 留 言 发 布 公 共 留 言 查 看 公 共 留 言... 9 三. 校 长 荐

全国艺术科学规划项目

生产支援功能 使用说明书(IP-110 篇)

目 录 第 一 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 硬 件 使 用 介 绍... 3 第 二 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 管 理 员 端 功 能 使 用 介 绍 系 统 管 理 员 登 陆 班

全国教师资格认定管理信息系统

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

标题

第 一 部 分 MagiCAD for Revit 安 装 流 程

Microsoft Word - 文件汇编.doc

Microsoft Word - 第7章 图表反转形态.doc

2006年顺德区高中阶段学校招生录取分数线

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

 编号:

类 似 地, 又 可 定 义 变 下 限 的 定 积 分 : ( ). 与 ψ 统 称 为 变 限 积 分. f ( ) d f ( t) dt,, 注 在 变 限 积 分 (1) 与 () 中, 不 可 再 把 积 分 变 量 写 成 的 形 式 ( 例 如 ) 以 免 与 积 分 上 下 限 的

Template BR_Rec_2005.dot

乐视云视频发行平台 操作手册 V1.1

<4D F736F F D C4EAB9A4B3CCCBB6CABFCAFDD1A7D7A8D2B5BFCEBFBCCAD4B4F3B8D9D3EBD2AAC7F3>

年 8 月 11 日, 公 司 召 开 2015 年 第 五 次 临 时 股 东 大 会, 审 议 通 过 了 关 于 公 司 <2015 年 股 票 期 权 激 励 计 划 ( 草 案 )> 及 其 摘 要 的 议 案 关 于 提 请 股 东 大 会 授 权 董 事 会 办 理 公

电信系教学大纲的基本规范

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

注 意 : 如 上 图 所 示, 网 上 缴 费 (12 月 3 日 至 10 日 ) 与 春 季 高 考 现 场 确 认 工 作 (12 月 3 日 至 6 日 ) 同 时 进 行, 没 有 经 过 现 场 确 认 和 确 认 信 息 没 有 上 传 到 服 务 器 的 考 生 不 能 网 上 缴

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

<4D F736F F D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使

上海证券交易所会议纪要

用节点法和网孔法进行电路分析

珠江钢琴股东大会

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

目 录 一 基 本 情 况 项 目 介 绍 项 目 结 构... 1 二 具 体 功 能 介 绍 新 闻 发 布 ) 进 入 新 闻 管 理 页 面 ) 进 入 添 加 新 闻 页 面 ) 完 成 新 闻 添 加... 3

<4D F736F F D20416E64726F CAD6BBFABCE0BFD8BFCDBBA7B6CBCAB9D3C3CAD6B2E15F56322E302E646F63>

证券代码: 证券简称:长城电脑 公告编号:

合 并 计 算 配 售 对 象 持 有 多 个 证 券 账 户 的, 多 个 证 券 账 户 市 值 合 并 计 算 确 认 多 个 证 券 账 户 为 同 一 配 售 对 象 持 有 的 原 则 为 证 券 账 户 注 册 资 料 中 的 账 户 持 有 人 名 称 有 效 身 份 证 明 文 件

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录 企 业 基 本 信 息 查 看 企 业 人 员 信 息 查 看 企 业 基 本 信 息 操 作 企 业 简 介 企 业 章

<4D F736F F D20D3A5D2EDC6DABBF5D6FACAD6CFB5CDB356312E302DD3C3BBA7CAB9D3C3CBB5C3F7CAE9>

2) 注 册 内 容 填 写, 阅 读 注 册 协 议, 完 成 注 册 字 段 标 示 有 符 号 的, 为 下 拉 选 择,* 为 必 填 项 2. 厦 钨 B2B 加 入 线 上 供 应 商 申 请 1) 系 统 显 示 已 注 册 用 户 信 息, 可 打 开 左 列 供 应 商 管 理 条

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

Microsoft Word - WEZWMYXZRCGZZDYY01.doc

业务方案篇

·岗位设置管理流程

黄 金 原 油 总 持 仓 增 长, 同 比 增 幅 分 别 为 4.2% 和 4.1% 而 铜 白 银 以 及 玉 米 则 出 现 减 持, 减 持 同 比 减 少 分 别 为 9.4%,9.4% 以 及 6.5% 大 豆, 豆 粕 结 束 连 续 4 周 总 持 仓 量 增 长, 出 现 小 幅

安达发SYS系统管理用户操作手册.doc

第3章 创建数据库

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。

学位论文文档编辑与提交

第 9 章 如 果 打 印 机 通 过 FireWire 连 接, 则 HP 建 议 使 用 FireWire 模 块 添 加 打 印 机, 以 充 分 利 用 FireWire 打 印 的 各 项 功 能, 并 且 仅 使 用 IP over Firewire 访 问 打 印 机 的 内 嵌 式

<4D F736F F D20BCC6CBE3BBFAD1A7BBE1C2DBCEC4B9DCC0EDCFB5CAB9D3C3CBB5C3F7CAE9CDB >

Microsoft Word - 第3章.doc

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

课程类 别


中国石化油品销售企业CRM调研报告

网络保险箱客户端使用手册

精 勤 求 学 自 强 不 息 Born to win! 解 析 : 由 极 限 的 保 号 性 知 存 在 U ( a) 当 a 时 f ( ) f ( a) 故 f ( ) 在 点 a 不 取 极 值 f ( ) f ( a) f ( ) f ( a) lim lim a a a a ( a)

一、资质申请

2.5 选 举 陈 晓 非 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.6 选 举 卢 婕 女 士 为 第 六 届 董 事 会 董 事 候 选 人 的 议 案 ; 2.7 选 举 张 文 君 先 生 为 第 六 届 董 事 会 独 立 董 事 候 选 人 的 议 案

Excel basics

<4D F736F F D20B3D6B2D6CFDEB6EEB1EDB8F1D7EED6D52E646F63>

<4D F736F F D20696F CAD6BBFABCE0BFD8BFCDBBA7B6CBCAB9D3C3CAD6B2E15F56322E302E646F63>

通用短信平台HTTP接口使用说明V1.0.4

第6章 PowerPoint 演示文稿制作软件

系统设计文档_样稿管理模块 V1.1_.doc

抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 % # % % % ) % % # # + #, ) +, % % % % % % % %

文档编号:

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

火车浏览器脚本制作教程

Microsoft Word - 正文.doc

微软用户

Transcription:

第 5 课 Android 基 础 控 件 详 解 Android 应 用 程 序 的 人 机 交 互 界 面 有 很 多 Android 控 件 组 成 几 乎 所 有 的 Android 都 会 涉 及 到 控 件 技 术, 如 文 本 框 编 辑 框 按 钮 列 表 等 控 件 这 些 在 Android 应 用 程 序 中 随 处 可 见, 本 课 将 对 Android 提 供 的 基 础 控 件 进 行 详 细 的 介 绍 本 课 学 习 目 标 : 掌 握 文 本 框 与 编 辑 框 的 基 本 应 用 掌 握 单 选 按 钮 和 复 选 按 钮 的 应 用 掌 握 普 通 按 钮 和 图 片 按 钮 的 基 本 应 用 掌 握 列 表 选 择 框 列 表 视 图 和 图 像 视 图 的 使 用 方 法 掌 握 日 期 与 时 间 选 择 器 的 基 本 使 用 了 解 计 时 器 控 件 的 使 用 方 法

Android 开 发 课 堂 实 录 5.1 文 本 框 与 编 辑 框 在 应 用 程 序 中, 经 常 需 要 编 辑 和 显 示 文 本, 在 Android 中 提 供 了 文 本 框 (TextView) 控 件 和 编 辑 框 (EditText) 控 件 前 者 用 于 在 屏 幕 上 显 示 文 本 ; 后 者 用 于 在 屏 幕 上 显 示 可 编 辑 的 文 本 框 其 中,EditText 是 TextView 的 子 类 下 面 将 详 细 介 绍 这 两 种 控 件 5.1.1 文 本 框 TextView 控 件 主 要 用 于 在 屏 幕 上 显 示 文 本, 通 过 在 XML 布 局 文 件 中 配 置 <TextView> 标 记 来 使 用 文 本 框 控 件 其 基 本 语 法 格 式 如 下 所 示 <TextView android:id="@+id/textview1" android:text="/hello world" /> 在 以 上 代 码 中,id 表 示 定 义 了 TextView 的 变 量 名 称 为 textview1, 会 自 动 写 进 R.java, 在 R.java 文 件 中 会 生 成 内 部 类 id, 可 在 主 程 序 调 用 R.id.textView1 来 获 取 这 个 控 件 变 量 实 体 layout_width 和 layout_height 表 示 TextView 的 高 度 和 宽 度, 都 设 置 为 wrap_content, 表 示 将 完 整 显 示 其 内 部 的 文 本, 布 局 元 素 将 根 据 内 容 更 改 大 小 text 属 性 表 示 要 显 示 的 文 本 的 内 容 TextView 控 件 有 很 多 属 性, 根 据 不 同 的 属 性 显 示 TextView 的 效 果 也 不 同 常 用 的 XML 属 性 如 表 5-1 所 示 android:autolink android:digits 表 5-1 TextView 支 持 的 XML 属 性 属 性 名 称 描 述 android:drawablebottom android:drawableleft android:drawablepadding android:drawableright android:drawabletop android:gravity android:hint android:inputtype android:linksclickable 设 置 是 否 当 文 本 为 URL 链 接 / 邮 箱 / 电 话 号 码 /map 时, 文 本 显 示 为 可 单 击 的 链 接 可 选 值 none web email phone map all 设 置 允 许 输 入 哪 些 字 符, 如 1234567890.+-*/%\n() 用 于 在 文 本 框 内 文 本 的 底 端 绘 制 指 定 图 像, 该 图 像 可 以 是 放 在 res\drawable 目 录 下 的 图 片, 通 过 @drawable/ 文 件 名 设 置 用 于 在 文 本 框 内 文 本 的 左 侧 绘 制 指 定 图 像, 该 图 像 可 以 是 放 在 res\drawable 目 录 下 的 图 片, 通 过 @drawable/ 文 件 名 设 置 设 置 text 与 drawable( 图 片 ) 的 间 隔, 与 drawableleft drawableright drawabletop drawablebottom 一 起 使 用, 可 设 置 为 负 数, 单 独 使 用 没 有 效 果 用 于 在 文 本 框 内 文 本 的 右 侧 绘 制 指 定 图 像, 该 图 像 可 以 是 放 在 res\drawable 目 录 下 的 图 片, 通 过 @drawable/ 文 件 名 设 置 用 于 在 文 本 框 内 文 本 的 顶 部 绘 制 指 定 图 像, 该 图 像 可 以 是 放 在 res\drawable 目 录 下 的 图 片, 通 过 @drawable/ 文 件 名 设 置 用 于 设 置 文 本 框 内 文 本 的 对 齐 方 式, 可 选 值 有 top bottom left right fill 等, 这 些 属 性 也 可 以 同 时 指 定, 各 个 属 性 之 间 用 竖 线 隔 开 例 如, 要 指 定 控 件 靠 右 下 角 对 齐, 可 以 使 用 属 性 值 right bottom Text 为 空 时 显 示 的 文 字 提 示 信 息, 可 通 过 textcolorhint 设 置 提 示 信 息 的 颜 色 设 置 文 本 的 类 型, 用 于 帮 助 输 入 法 显 示 合 适 的 键 盘 类 型 设 置 链 接 是 否 单 击 链 接 104

SPSS 第 5 课 Android 基 础 控 件 详 解 属 性 名 称 描 述 android:marqueerepeatlimit android:maxlength android:lines android:maxlines android:minlines android:linespacingextra android:linespacingmultiplier android:numeric android:password android:phonenumber android:privateimeoptions android:scrollhorizontally android:selectallonfocus android:shadowcolor android:shadowdx android:shadowdy android:shadowradius android:singleline android:text android:textappearance android:textcolor android:textcolorhighlight android:textcolorhint android:textcolorlink 续 表 在 ellipsize 指 定 marquee 的 情 况 下, 设 置 重 复 滚 动 的 次 数, 当 设 置 为 marquee_forever 时 表 示 无 限 次 限 制 显 示 的 文 本 长 度, 超 出 部 分 不 显 示 设 置 文 本 的 行 数, 设 置 两 行 就 显 示 两 行, 即 使 第 二 行 没 有 数 据 设 置 文 本 的 最 大 显 示 行 数, 与 width 或 者 layout_width 结 合 使 用, 超 出 部 分 自 动 换 行, 超 出 行 数 将 不 显 示 设 置 文 本 的 最 小 行 数, 与 lines 类 似 设 置 行 间 距 设 置 行 间 距 的 倍 数 如 果 被 设 置, 该 TextView 有 一 个 数 字 输 入 法 以 小 点. 显 示 文 本 设 置 为 电 话 号 码 的 输 入 方 式 设 置 输 入 法 选 项 设 置 文 本 超 出 TextView 宽 度 的 情 况 下, 是 否 出 现 横 拉 条 如 果 文 本 是 可 选 择 的, 让 它 获 取 焦 点 而 不 是 将 光 标 移 动 为 文 本 的 开 始 位 置 或 者 末 尾 位 置 指 定 文 本 阴 影 的 颜 色, 需 要 与 shadowradius 一 起 使 用 设 置 阴 影 横 向 坐 标 开 始 位 置 设 置 阴 影 纵 向 坐 标 开 始 位 置 设 置 阴 影 的 半 径 设 置 为 0.1 就 变 成 字 体 的 颜 色 了, 一 般 设 置 为 3.0 的 效 果 比 较 好 设 置 单 行 显 示 如 果 和 layout_width 一 起 使 用, 当 文 本 不 能 全 部 显 示 时, 后 面 用 来 表 示 如 果 不 设 置 singleline 或 者 设 置 为 false, 文 本 将 自 动 换 行 设 置 显 示 文 本 设 置 文 字 外 观 设 置 文 本 颜 色 被 选 中 文 字 的 底 色, 默 认 为 蓝 色 设 置 提 示 信 息 文 字 的 颜 色, 默 认 为 灰 色 与 hint 一 起 使 用 文 字 链 接 的 颜 色 android:textscalex 设 置 文 字 之 间 间 隔, 默 认 为 1.0f android:textsize android:textstyle 设 置 文 字 大 小, 推 荐 度 量 单 位 sp 设 置 字 形 [bold( 粗 体 ), italic( 斜 体 ),bolditalic( 又 粗 又 斜 )], 可 以 设 置 一 个 或 多 个, 用 隔 开 android:typeface 设 置 文 本 字 体, 必 须 是 以 下 常 量 值 之 一 :normal sans serif 或 者 monospace android:height 设 置 文 本 区 域 的 高 度, 支 持 度 量 单 位 :dp/sp/in/mm( 毫 米 ) android:maxheight android:minheight 设 置 文 本 区 域 的 最 大 高 度 设 置 文 本 区 域 的 最 小 高 度 android:width 设 置 文 本 区 域 的 宽 度, 支 持 度 量 单 位 :dp/sp/in/mm( 毫 米 ) android:maxwidth android:minwidth 设 置 文 本 区 域 的 最 大 宽 度 设 置 文 本 区 域 的 最 小 宽 度 练 习 1 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_01, 实 现 在 文 本 框 中 显 示 超 链 接 邮 箱, 显 示 带 图 片 的 文 本, 单 行 和 多 行 显 示 文 本 的 功 能 (1) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 作 为 文 本 框 显 示 的 布 局 文 件, 105

Android 开 发 课 堂 实 录 在 其 中 添 加 4 个 文 本 框, 分 别 设 置 属 性 如 下 所 示 <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="vertical" > <TextView android:id="@+id/textview01" android:autolink="all" android:text="@string/text01" android:layout_margin="10dp"/> <TextView android:id="@+id/textview02" android:drawabletop="@drawable/logo" android:text="@string/text02" android:gravity="center" android:layout_margin="10dp"/> <TextView android:id="@+id/textview03" android:singleline="true" android:text="@string/text03"/> <TextView android:id="@+id/textview04" android:singleline="false" android:text="@string/text03" android:linespacingmultiplier="1.5"/> </LinearLayout> 其 中 第 一 个 文 本 框 添 加 了 属 性 autolink, 并 且 设 置 值 为 all, 表 示 该 文 本 框 中 所 含 有 的 URL 和 邮 箱 地 址, 将 用 超 链 接 显 示 第 二 个 文 本 框 中 添 加 了 属 性 drawabletop, 是 用 来 在 文 本 框 的 上 部 显 示 图 片, 而 且 该 文 本 在 图 片 下 方 的 正 中 间 第 三 个 和 第 四 个 文 本 框 中 都 设 置 了 属 性 singleline, 其 中 第 三 个 值 设 置 为 true, 代 表 单 行 显 示 文 本, 多 余 的 将 用 代 替 属 性 linespacingmultiplier 表 示 行 间 距,layout_margin 表 示 边 距 在 上 述 代 码 中 的 text 表 示 显 示 的 文 本, 都 来 自 项 目 的 res/values 中 的 strings.xml 文 件 (2) 在 项 目 的 res 目 录 下 的 drawable_ldpi 文 件 夹 中, 放 入 一 张 名 称 为 logo.gif 的 图 片, 用 以 在 第 二 个 文 本 框 上 部 显 示 (3) 在 项 目 的 res/values 中 的 strings.xml 文 件 中 添 加 文 本 框 中 文 本 的 显 示 内 容, 代 码 如 下 所 示 <string name="text01"> 汇 智 学 习 视 频 网 站 :http://www.itzcn.com 邮 箱 地 址 为 : admin@itzcn.com</string> 106

SPSS 第 5 课 Android 基 础 控 件 详 解 <string name="text02"> 带 图 片 的 文 本 框 </string> <string name="text03">android 是 一 种 基 于 Linux 的 自 由 及 开 放 源 代 码 的 操 作 系 统, 主 要 使 用 于 移 动 设 备, 如 智 能 手 机 和 平 板 电 脑, 由 Google 公 司 和 开 放 手 机 联 盟 领 导 及 开 发 </string> 运 行 项 目 后, 文 本 框 显 示 的 效 果 如 图 5-1 所 示 图 5-1 文 本 框 的 显 示 效 果 5.1.2 编 辑 框 编 辑 框 主 要 用 于 在 屏 幕 上 显 示 文 本 输 入 框, 便 于 用 户 输 入 信 息, 通 过 在 XML 布 局 文 件 中 配 置 <EditView> 标 记 来 使 用 编 辑 框 控 件, 其 基 本 语 法 格 式 如 下 <EditText android:id="@+id/editview" android:hint=" 在 编 辑 框 内 容 为 空 时, 显 示 该 内 容 " android:singleline="true" android:inputtype="textpersonname"/> 在 上 述 代 码 中, 定 义 的 编 辑 框 的 宽 度 和 高 度 均 为 wrap_content, 表 示 将 完 整 显 示 其 内 部 的 文 本, 布 局 元 素 将 根 据 内 容 更 改 大 小 hint 属 性 表 示 当 编 辑 框 内 容 为 空 的 时 候, 显 示 的 默 认 内 容 singleline 属 性 表 示 是 否 单 行, 设 置 为 true 表 示 输 入 内 容 为 单 行 inputtype 属 性 是 用 于 指 定 当 前 编 辑 框 输 入 内 容 的 文 本 类 型 提 示 编 辑 框 的 XML 属 性 与 文 本 框 属 性 一 样, 这 里 就 不 再 一 一 列 举 了 练 习 2 下 面 给 出 一 个 使 用 编 辑 框 的 实 例 在 Eclipse 中 创 建 Android 项 目, 名 称 为 ch05_02, 实 现 会 员 注 册 界 面 (1) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 作 为 编 辑 框 显 示 的 布 局 文 件, 为 了 使 应 用 程 序 布 局 显 示 不 杂 乱, 这 里 添 加 了 一 个 TableLayout 表 格 布 局 管 理 器, 并 添 加 了 5 个 TableRow 表 格 行, 修 改 后 布 局 文 件 的 主 要 代 码 如 下 所 示 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" 107

Android 开 发 课 堂 实 录 android:layout_height="match_parent" android:orientation="vertical" > <TableRow android:id="@+id/tablerow1"> <!-- 在 此 处 添 加 文 本 框 与 编 辑 框 配 置 属 性 --> </TableRow> 由 于 表 格 行 的 代 码 基 本 一 致, 因 此 在 此 处 省 略 其 他 四 个 表 格 行 的 代 码, 需 要 注 意 的 是 在 编 写 其 他 几 个 表 格 行 的 时 候 应 将 各 个 表 格 行 的 id 重 新 设 置 (2) 在 第 一 个 表 格 中 添 加 一 个 用 于 显 示 提 示 信 息 的 文 本 框 和 一 个 用 于 输 入 会 员 昵 称 的 编 辑 框 控 件, 具 体 代 码 如 下 <TextView android:id="@+id/textview05" android:text=" 用 户 名 "/> <EditText android:layout_width="300dp" android:id="@+id/nickname" android:hint="@string/edit01" android:singleline="true" android:inputtype="textpersonname"/> 上 述 代 码 中,EditView 控 件 中 的 singleline="true" 表 示 单 行 输 入 文 本 在 EditView 控 件 中, inputtype="textpersonname" 表 示 输 入 类 型 为 用 户 名 (3) 在 第 二 个 表 格 中 添 加 一 个 用 于 显 示 提 示 信 息 的 文 本 框 和 一 个 用 于 输 入 密 码 的 编 辑 框 控 件, 具 体 代 码 如 下 <TextView android:id="@+id/textview06" android:text=" 密 码 "/> <EditText android:layout_width="match_parent" android:id="@+id/pwd" android:hint="@string/edit02" android:password="true" android:singleline="true"/> 上 述 代 码 中,EditView 控 件 的 password="true" 表 示 输 入 的 内 容 为 密 码, 将 用. 代 替 输 入 的 内 容, 不 过 这 种 方 法 已 经 过 时, 主 要 用 以 下 方 法 设 置 密 码 (4) 在 第 三 个 表 格 中 添 加 一 个 用 于 显 示 提 示 信 息 的 文 本 框 和 一 个 用 于 输 入 确 认 密 码 的 编 辑 框 控 件, 具 体 代 码 如 下 108

SPSS 第 5 课 Android 基 础 控 件 详 解 <TextView android:id="@+id/textview07" android:text=" 确 认 密 码 "/> <EditText android:layout_width="fill_parent" android:id="@+id/pwd2" android:hint="@string/edit02" android:inputtype="textpassword" android:singleline="true"/> 上 述 代 码 中,EditView 控 件 中 的 inputtype="textpassword" 表 示 输 入 的 内 容 为 密 码, 将 用. 代 替 输 入 的 内 容 (5) 在 第 四 个 表 格 中 添 加 一 个 用 于 显 示 提 示 信 息 的 文 本 框 和 一 个 用 于 输 入 电 话 号 码 的 编 辑 框 控 件, 具 体 代 码 如 下 <TextView android:id="@+id/textview08" android:text=" 电 话 号 码 "/> <EditText android:layout_width="300dp" android:id="@+id/phone" android:hint="@string/edit03" android:singleline="true" android:inputtype="phone"/> 上 述 代 码 中 的 EditView 控 件,inputType="phone" 表 示 输 入 的 内 容 为 电 话 号 码, 仅 仅 能 输 入 整 数 (6) 在 第 五 个 表 格 中 添 加 一 个 用 于 显 示 提 示 信 息 的 文 本 框 和 一 个 用 于 输 入 邮 箱 地 址 的 编 辑 框 控 件, 具 体 代 码 如 下 <TextView android:id="@+id/textview09" android:text=" 邮 箱 地 址 "/> <EditText android:layout_width="300dp" android:id="@+id/email" android:hint="@string/edit04" android:singleline="true" android:inputtype="textemailaddress"/> 上 述 代 码 中 的 EditView 控 件 中,inputType="textEmailAddress" 表 示 输 入 内 容 为 电 子 邮 件, 将 109

Android 开 发 课 堂 实 录 会 在 虚 拟 键 盘 中 加 入 字 符 @, 用 于 电 子 邮 件 地 址 的 输 入 (7) 添 加 一 个 水 平 线 性 布 局 管 理 器, 并 在 该 布 局 管 理 器 中 添 加 两 个 按 钮, 具 体 代 码 如 下 <LinearLayout android:orientation="horizontal" > <Button android:id="@+id/reg" android:text="@string/reg"/> <Button android:id="@+id/rest" android:text="@string/rest"/> </LinearLayout> 上 述 代 码 中 主 要 是 设 置 了 两 个 按 钮 控 件, 按 钮 控 件 将 会 在 以 后 详 细 介 绍, 这 里 就 不 再 说 明 (8) 在 项 目 的 res/values 中 的 strings.xml 文 件 中 添 加 编 辑 框 中 所 用 到 的 字 符 串 内 容, 代 码 如 下 所 示 <string name="edit01"> 请 输 入 用 户 名 </string> <string name="edit02"> 请 输 入 密 码 </string> <string name="edit03"> 请 输 入 电 话 号 码 </string> <string name="edit04"> 请 输 入 邮 箱 地 址 </string> <string name="reg"> 注 册 </string> <string name="rest"> 重 置 </string> (9) 为 了 使 注 册 信 息 能 够 在 控 制 台 下 输 出, 在 com.android.activity 包 中 的 MainActivity.java 文 件 中, 添 加 如 下 代 码 protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_editview); Button reg = (Button) findviewbyid(r.id.reg); // 获 取 注 册 按 钮 控 件 reg.setonclicklistener(new regonclicklistener()); // 为 注 册 按 钮 设 置 监 听 class regonclicklistener implements OnClickListener{ // 监 听 器 实 现 public void onclick(view v) { EditText nickname = (EditText) findviewbyid(r.id.nickname); // 获 取 会 员 用 户 名 控 件 EditText pwd = (EditText) findviewbyid(r.id.pwd); // 获 取 会 员 注 册 密 码 控 件 EditText pwd2 = (EditText) findviewbyid(r.id.pwd2); // 获 取 会 员 确 认 密 码 控 件 EditText phone = (EditText) findviewbyid(r.id.phone); // 获 取 会 员 注 册 电 话 号 码 控 件 EditText email = (EditText) findviewbyid(r.id.email); 110

SPSS 第 5 课 Android 基 础 控 件 详 解 // 获 取 会 员 注 册 邮 箱 控 件 Log.i(" 用 户 名 为 :", nickname.gettext().tostring()); Log.i(" 密 码 为 :", pwd.gettext().tostring()); Log.i(" 确 认 密 码 为 :", pwd2.gettext().tostring()); Log.i(" 电 话 号 码 为 :", phone.gettext().tostring()); Log.i(" 邮 箱 地 址 为 :", email.gettext().tostring()); 上 述 代 码 中,findViewById() 根 据 控 件 的 id 来 获 取 控 件 对 象, 由 于 获 取 的 控 件 对 象 为 View 类 型, 所 以 要 根 据 需 要 转 换 成 所 想 要 得 到 的 控 件 对 象 Button 是 按 钮 控 件, 获 取 后 为 按 钮 使 用 setonclicklistener() 添 加 一 个 监 听, 当 单 击 该 按 钮 的 时 候 将 会 执 行 监 听 中 的 OnClick(View v) 方 法, Button 控 件 将 会 在 下 个 小 节 详 细 介 绍, 这 里 就 不 再 赘 述 了 Log.i(String tag,string msg) 用 于 将 信 息 添 加 到 日 志 文 件 中, 然 后 在 控 制 台 的 日 志 管 理 中 显 示 运 行 项 目 后, 编 辑 框 的 应 用 效 果 如 图 5-2 所 示 在 编 辑 框 中 输 入 内 容 后 的 效 果 如 图 5-3 所 示 图 5-2 编 辑 框 的 应 用 效 果 图 5-3 编 辑 框 输 入 内 容 后 的 效 果 在 控 制 台 日 志 中 显 示 内 容 如 图 5-4 所 示 图 5-4 在 日 志 中 显 示 编 辑 框 中 输 入 的 内 容 5.2 按 钮 在 Android 中 提 供 了 普 通 按 钮 (Button) 和 图 片 按 钮 (ImageButton) 两 个 控 件 这 两 个 控 件 都 可 以 在 应 用 程 序 界 面 显 示 一 个 按 钮 当 用 户 单 击 按 钮 时, 将 会 触 发 一 个 onclick 事 件, 可 以 通 过 为 按 钮 添 加 单 击 事 件 监 听 器 指 定 所 要 触 发 的 动 作 5.2.1 普 通 按 钮 Button 控 件 在 布 局 中 的 配 置 在 前 面 也 有 用 到,Button 控 件 的 基 本 使 用 方 法 与 TextView EditView 并 无 太 大 的 差 别 其 在 XML 布 局 文 件 中 简 单 的 配 置 如 下 所 示 <Button android:id="@+id/button" 111

Android 开 发 课 堂 实 录 android:layout_width="match_parent" android:layout_height="match_parent" android:text=" 普 通 按 钮 " /> 在 上 面 的 代 码 中,id 表 示 定 义 了 Button 的 变 量 名 称 为 button, 会 自 动 写 进 R.java, 在 R.java 文 件 中 会 生 成 内 部 类 id, 可 在 主 程 序 里 面 调 用 R.id.button 来 获 取 这 个 控 件 变 量 实 体 layout_width 和 layout_height 表 示 Button 的 高 度 和 宽 度, 都 设 置 为 wrap_content, 表 示 布 局 元 素 将 根 据 内 容 更 改 大 小 text 属 性 表 示 普 通 按 钮 上 所 显 示 的 内 容 按 钮 最 常 用 的 就 是 单 击 事 件,Android 提 供 了 两 种 为 按 钮 添 加 单 击 事 件 监 听 器 的 方 法, 一 种 是 在 Java 代 码 中 完 成, 具 体 代 码 如 下 所 示 Button button = (Button) findviewbyid(r.id.button); // 通 过 Id 来 获 取 布 局 文 件 中 的 按 钮 button.setonclicklistener(new buttononclicklistener()); // 为 按 钮 添 加 单 击 事 件 监 听 器 class buttononclicklistener implements OnClickListener{// 监 听 器 实 现 接 口 @Override public void onclick(view v) { // 编 写 需 要 执 行 的 动 作 代 码 另 一 种 方 法 是 在 Activity 中 写 一 个 包 含 View 类 型 的 参 数 的 方 法, 其 主 要 代 码 如 下 public void loginclick(view v) { // 编 写 需 要 执 行 的 动 作 代 码 那 么 就 可 以 在 布 局 文 件 中 通 过 给 按 钮 添 加 属 性 android:onclick="loginclick" 语 句 为 按 钮 添 加 单 击 事 件 监 听 器 112 5.2.2 图 片 按 钮 图 片 按 钮 与 普 通 按 钮 的 使 用 方 法 基 本 相 同, 只 不 过 图 片 按 钮 可 以 选 择 自 定 义 的 图 片 来 作 为 按 钮, 在 布 局 文 件 中 加 载 图 片 按 钮 的 基 本 代 码 如 下 所 示 <ImageButton android:id="@+id/imagebutton" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/imagebutton" /> 上 述 代 码 中, 图 片 按 钮 的 宽 和 高 设 置 为 match_parent, 表 示 填 满 整 个 父 窗 口,src 属 性 表 示 图 片 的 路 径 提 示 和 普 通 按 钮 一 样, 使 用 图 片 按 钮 的 时 候 也 需 要 为 按 钮 添 加 单 击 事 件 监 听 器, 具 体 方 法 与 普 通 按 钮 方 法 一 致, 这 里 就 不 再 赘 述 练 习 3 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_03 在 布 局 中 添 加 一 个 普 通 按 钮 和 图 片 按

SPSS 第 5 课 Android 基 础 控 件 详 解 钮, 并 为 两 个 按 钮 设 置 单 击 事 件 监 听 器, 单 击 按 钮 时 触 发 事 件 (1) 在 项 目 res 目 录 下 的 drawable_ldpi 文 件 夹 中, 放 入 一 张 名 称 为 imagebutton.bmp 的 图 片, 用 于 作 为 图 片 按 钮 的 图 片 (2) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 改 为 线 性 布 局 添 加 一 个 文 本 框 控 件, 用 于 显 示 当 前 正 在 单 击 的 按 钮 控 件, 主 要 代 码 如 下 <TextView android:id="@+id/textview01" android:text="@string/textshow"/> 当 没 有 单 击 按 钮 的 时 候, 该 文 本 框 显 示 的 内 容 为 项 目 下 res/values 的 strings.xml 文 件 中 的 属 性 为 textshow 的 字 符 串, 当 单 击 按 钮 后 内 容 将 发 生 改 变 (3) 添 加 一 个 水 平 线 性 布 局 管 理 器, 并 在 该 布 局 管 理 器 中 添 加 一 个 普 通 按 钮 和 一 个 图 片 按 钮, 主 要 代 码 如 下 <LinearLayout android:orientation="horizontal" > <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="fill_parent" android:text="@string/button" /> <ImageButton android:id="@+id/imagebutton" android:layout_width="match_parent" android:layout_height="match_parent" android:contentdescription="@string/button" android:src="@drawable/imagebutton" /> </LinearLayout> 上 述 代 码 中,Button 控 件 中 的 text 属 性 表 示 该 Button 上 所 显 示 的 内 容 ;ImageButton 控 件 中 的 src 表 示 该 图 片 控 件 的 图 片 来 源 (4) 添 加 两 个 文 本 框 控 件, 用 于 统 计 单 击 每 个 按 钮 的 次 数, 主 要 代 码 如 下 <TextView android:id="@+id/textview02" android:text="@string/text01"/> <TextView android:id="@+id/textview03" android:text="@string/text02/> 113

Android 开 发 课 堂 实 录 (5) 在 项 目 的 res/values 中 的 strings.xml 文 件 中 添 加 文 本 框 文 本 的 显 示 内 容, 代 码 如 下 所 示 <string name="button"> 登 录 </string> <string name="textshow"> 您 没 有 单 击 按 钮 </string> <string name="text01"> 您 没 有 单 击 普 通 按 钮 </string> <string name="text02"> 您 没 有 单 击 图 片 按 钮 </string> (6) 在 com.android.activity 包 中 的 MainActivity.java 文 件 中, 添 加 按 钮 单 击 事 件 监 听 器 和 设 置 文 本 框 显 示 内 容, 其 主 要 代 码 如 下 private TextView textshow = null; private int count1 = 0; // 统 计 普 通 按 钮 单 击 次 数 private int count2 = 0; // 统 计 图 片 按 钮 单 击 次 数 protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button button = (Button) findviewbyid(r.id.button);// 获 取 普 通 按 钮 对 象 ImageButton imagebutton = (ImageButton) findviewbyid(r.id.imagebutton); // 获 取 图 片 按 钮 button.setonclicklistener(new buttononclicklistener()); // 为 普 通 按 钮 添 加 事 件 监 听 器 imagebutton.setonclicklistener(new imagebuttononclicklistener()); // 为 图 片 按 钮 添 加 事 件 监 听 器 class buttononclicklistener implements OnClickListener{ public void onclick(view v) { TextView buttoncount = (TextView) findviewbyid(r.id.textview02); // 获 取 文 本 框 对 象 count1 ++ ; textshow = (TextView) findviewbyid(r.id.textview01); textshow.settext(" 您 正 在 单 击 普 通 按 钮 "); // 设 置 文 本 框 显 示 内 容 buttoncount.settext(" 您 一 共 单 击 了 " + count1 + " 次 普 通 按 钮 "); // 设 置 文 本 框 显 示 内 容 class imagebuttononclicklistener implements OnClickListener{ public void onclick(view v) { TextView buttoncount = (TextView) findviewbyid(r.id.textview03); count2 ++ ; textshow = (TextView) findviewbyid(r.id.textview01); textshow.settext(" 您 正 在 单 击 图 片 按 钮 "); buttoncount.settext(" 您 一 共 单 击 了 " + count2 + " 次 图 片 按 钮 "); 上 述 代 码 中 findviewbyid() 根 据 控 件 的 id 来 获 取 控 件 对 象, 由 于 获 取 的 控 件 对 象 为 View 类 型, 所 以 要 根 据 需 要 转 换 成 所 想 要 得 到 的 控 件 对 象 Button 是 按 钮 控 件, 获 得 后 为 按 钮 使 用 setonclicklistener() 添 加 一 个 事 件 监 听 器, 当 单 击 该 按 钮 的 时 候 将 会 执 行 监 听 中 的 OnClick(View v) 方 法 每 执 行 一 次 onclick(view v) 方 法, 都 会 将 单 击 次 数 加 1, 这 样 就 将 按 钮 的 单 击 次 数 统 计 出 来, 114

SPSS 第 5 课 Android 基 础 控 件 详 解 并 在 文 本 框 内 显 示 运 行 项 目 后, 按 钮 显 示 效 果 如 图 5-5 所 示 当 单 击 按 钮 后, 效 果 如 图 5-6 所 示 图 5-5 按 钮 显 示 效 果 图 5-6 单 击 按 钮 后 效 果 5.3 单 选 按 钮 与 复 选 框 单 选 按 钮 和 复 选 框 都 继 承 了 普 通 按 钮 因 此 它 们 都 可 以 直 接 使 用 普 通 按 钮 支 持 各 种 属 性 和 方 法 同 时, 单 选 按 钮 控 件 和 复 选 框 控 件 提 供 了 是 否 选 中 的 功 能 下 面 分 别 对 单 选 按 钮 和 复 选 框 进 行 详 细 的 介 绍 5.3.1 单 选 按 钮 单 选 按 钮 用 于 多 选 一 的 状 态, 一 般 情 况 下, 单 选 按 钮 默 认 为 一 个 圆 形 的 图 片, 在 图 标 旁 有 该 单 选 按 钮 的 说 明 文 字 在 程 序 中, 一 般 将 同 类 单 选 按 钮 放 在 同 一 个 单 选 按 钮 组 中 在 同 一 个 单 选 按 钮 组 中, 当 某 个 单 选 按 钮 被 选 中 的 时 候, 其 他 单 选 按 钮 则 自 动 取 消 被 选 中 的 状 态 单 选 按 钮 用 RadioButton 表 示,RadioButton 是 Button 的 子 类, 所 以 支 持 Button 所 支 持 的 属 性 在 屏 幕 上 添 加 单 选 按 钮 可 以 通 过 在 XML 布 局 文 件 中 使 用 <RadioButton> 标 记 添 加, 其 基 本 语 法 格 式 如 下 所 示 <RadioButton android:text=" 男 " android:checked="true" android:id="@+id/radio"/> 上 述 代 码 中,text 属 性 表 示 单 选 按 钮 的 标 签 文 字 ;checked 表 示 该 单 选 按 钮 默 认 是 否 处 于 选 中 状 态, 当 为 true 时 表 示 该 单 选 按 钮 处 于 选 中 状 态 ; 为 false 时, 表 示 取 消 选 中, 默 认 为 false 多 数 情 况 下, 在 使 用 单 选 按 钮 的 时 候 都 会 使 用 到 单 选 按 钮 组, 将 单 选 按 钮 放 在 单 选 按 钮 组 中 单 选 按 钮 组 在 XML 中 通 过 添 加 <RadioGroup> 标 记 来 添 加 单 选 按 钮 组, 基 本 语 法 格 式 如 下 所 示 <RadioGroup android:orientation="horizontal" android:id="@+id/radiogroup"> <!-- 添 加 单 选 按 钮 控 件 --> </RadioGroup> 115

Android 开 发 课 堂 实 录 在 上 述 代 码 中,orientation="horizontal" 表 示 单 选 按 钮 组 中 的 单 选 按 钮 水 平 放 置 与 普 通 按 钮 的 使 用 方 法 相 同, 在 使 用 单 选 按 钮 的 时 候 也 要 给 单 选 按 钮 添 加 事 件 监 听 器, 不 过 在 这 里 是 给 单 选 按 钮 组 添 加 监 听, 其 主 要 代 码 如 下 所 示 RadioGroup radiogroup = (RadioGroup) findviewbyid(r.id.radiogroup); radiogroup.setoncheckedchangelistener(new RadioGroup.OnCheckedChange- Listener() { public void oncheckedchanged(radiogroup group, int checkedid) { RadioButton radiobutton = (RadioButton) findviewbyid(checkedid); radiobutton.gettext(); // 获 取 被 选 中 的 单 选 按 钮 的 值 ); 上 述 代 码 中, 在 获 取 单 选 按 钮 的 值 时, 首 先 通 过 单 选 按 钮 组 的 id 来 获 取 单 选 按 钮 组, 然 后 为 其 添 加 OnCheckedChangeListener 监 听 器, 并 在 oncheckedchanged() 方 法 中 根 据 参 数 checkedid 获 取 被 选 中 的 单 选 按 钮, 并 通 过 gettext() 方 法 获 取 该 单 选 按 钮 所 对 应 的 值 5.3.2 复 选 框 复 选 框 用 于 在 多 个 选 择 中 选 择 一 个 或 多 个 的 情 况 在 默 认 的 情 况 下, 复 选 框 显 示 为 一 个 方 块 图 标, 并 在 该 图 标 旁 有 该 复 选 框 的 说 明 文 字 每 一 个 复 选 框 都 有 选 中 和 未 选 中 两 种 状 态 复 选 框 在 Android 中 用 CheckBox 表 示,CheckBox 也 是 Button 的 子 类, 所 以 也 支 持 Button 所 支 持 的 属 性 在 屏 幕 上 添 加 单 选 按 钮 可 以 通 过 在 XML 布 局 文 件 中 使 用 <CheckBox> 标 记 添 加, 其 基 本 语 法 格 式 如 下 所 示 <CheckBox android:text=" 游 泳 " android:id="@+id/checkbox"/> 上 述 代 码 中,text 属 性 表 示 CheckBox 的 标 签 文 字 id="@+id/checkbox" 表 示 一 个 id 为 checkbox 的 CheckBox 控 件 由 于 在 使 用 复 选 框 的 时 候 可 以 同 时 选 中 多 项, 所 以 为 了 确 定 用 户 是 否 选 中 了 该 项, 则 需 要 给 每 一 个 复 选 框 选 项 都 添 加 一 个 事 件 监 听 器, 为 复 选 框 添 加 监 听 器 的 主 要 代 码 如 下 所 示 private CheckBox checkbox = null; protected void oncreate(bundle savedinstancestate) { // 省 略 部 分 代 码 checkbox = (CheckBox) findviewbyid(r.id.checkbox); // 获 取 复 选 框 对 象 checkbox.setoncheckedchangelistener(new CheckBoxOnCheckedChangedListener()); class CheckBoxOnCheckedChangedListener implements OnCheckedChange- Listener{ @Override public void oncheckedchanged(compoundbutton arg0, boolean arg1) { if (checkbox.ischecked()) { checkbox.gettext(); // 判 断 该 复 选 框 是 否 被 选 中 // 获 取 选 中 复 选 框 的 值 116

SPSS 第 5 课 Android 基 础 控 件 详 解 在 上 述 代 码 中, 获 取 复 选 框 的 值 的 时 候, 首 先 通 过 复 选 框 的 id 来 获 取 复 选 框 对 象, 然 后 为 其 添 加 OnCheckedChangeListener 监 听 器, 并 在 oncheckedchanged() 方 法 中 根 据 方 法 ischecked() 来 获 取 该 复 选 框 是 否 被 选 中, 如 果 被 选 中, 则 通 过 gettext() 方 法 获 取 该 复 选 框 所 对 应 的 值 练 习 4 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_04, 实 现 一 个 性 别 和 兴 趣 的 选 择 界 面 (1) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 首 先 添 加 一 个 线 性 布 局, 用 于 添 加 一 个 文 本 框 控 件 和 一 个 单 选 按 钮 组, 其 中 在 单 选 按 钮 组 中 添 加 两 个 单 选 按 钮 控 件, 主 要 代 码 如 下 所 示 <LinearLayout android:orientation="vertical" > <TextView android:text="@string/sex"/> <RadioGroup android:orientation="horizontal" android:id="@+id/sex"> <RadioButton android:text="@string/man" android:id="@+id/man"/> <!-- 省 略 性 别 为 女 的 单 选 按 钮 --> </RadioGroup> </LinearLayout> 在 布 局 文 件 中 的 orientation="vertical" 表 示 在 其 中 的 控 件 将 垂 直 放 置 ; 单 选 按 钮 组 中 的 orientation="horizontal" 表 示 在 单 选 按 钮 组 中 的 两 个 单 选 按 钮 将 水 平 放 置 ; 由 于 两 个 单 选 按 钮 的 布 局 文 件 一 致, 这 里 就 省 略 了 性 别 为 女 的 单 选 按 钮 的 配 置, 其 中 性 别 为 女 的 单 选 按 钮 的 text="@string/woman",id="@+id/woman" (2) 在 上 述 步 骤 完 成 后, 进 行 复 选 框 和 普 通 按 钮 的 布 局 文 件 添 加 一 个 文 本 框 控 件 五 个 复 选 框 控 件 和 一 个 普 通 按 钮 控 件, 主 要 代 码 如 下 所 示 <TextView android:text="@string/fav"/> <CheckBox 117

Android 开 发 课 堂 实 录 android:text="@string/like1" android:id="@+id/like1"/> <!-- 省 略 其 他 四 个 兴 趣 复 选 框 --> <Button android:text="@string/button" android:id="@+id/button"/> 在 上 述 代 码 中, 复 选 框 控 件 中 的 text="@string/like1" 表 示 该 复 选 框 显 示 的 内 容, 由 于 这 5 个 选 框 控 件 配 置 相 同, 这 里 就 省 去 其 他 四 个 复 选 框 的 配 置, 其 中 其 他 四 个 复 选 框 的 内 容 分 别 为 text="@string/like2 text="@string/like3 text="@string/like4 text="@string/like5, id 分 别 为 id="@+id/like2" id="@+id/like3" id="@+id/like4" id="@+id/like5" (3) 在 项 目 res/values 中 的 strings.xml 文 件 中 添 加 文 本 框 文 本 的 显 示 内 容, 代 码 如 下 所 示 <string name="sex"> 请 选 择 您 的 性 别 </string> <string name="fav"> 请 选 择 您 的 兴 趣 </string> <string name="man"> 男 </string> <string name="woman"> 女 </string> <string name="button"> 确 定 </string> <string name="like1"> 体 育 </string> <string name="like2"> 美 术 </string> <string name="like3"> 看 电 影 </string> <string name="like4"> 上 网 </string> <string name="like5"> 购 物 </string> (4) 在 com.android.activity 包 中 的 MainActivity.java 文 件 中, 添 加 了 单 选 按 钮 组 复 选 框 控 件 和 普 通 按 钮 控 件 的 监 听 器, 其 主 要 代 码 如 下 所 示 private RadioGroup sex = null; // 声 明 单 选 按 钮 组 对 象 private CheckBox like1 = null; // 声 明 复 选 框 控 件 对 象 // 省 略 其 他 四 个 复 选 框 对 象 的 声 明 private RadioButton radio = null; // 声 明 单 选 按 钮 对 象 protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button button = (Button) findviewbyid(r.id.button); button.setonclicklistener(new buttononclicklistener()); // 为 普 通 按 钮 添 加 监 听 器 sex = (RadioGroup) findviewbyid(r.id.sex); // 根 据 id 属 性 获 取 单 选 按 钮 组 like1 = (CheckBox) findviewbyid(r.id.like1); // 根 据 id 属 性 获 取 复 选 框 like1.setoncheckedchangelistener(new checkboxlistener()); // 为 复 选 框 设 置 监 听 // 省 略 其 他 四 个 复 选 框 的 获 取 和 监 听 器 的 添 加 sex.setoncheckedchangelistener(new RadioGroup.OnCheckedChangeListener() { public void oncheckedchanged(radiogroup group, int checkedid) { radio = (RadioButton) findviewbyid(checkedid); ); 118

SPSS 第 5 课 Android 基 础 控 件 详 解 class checkboxlistener implements OnCheckedChangeListener{ public void oncheckedchanged(compoundbutton buttonview, boolean ischecked) { class buttononclicklistener implements OnClickListener{ public void onclick(view v) { if (radio!= null) { else{ // 单 选 按 钮 对 象 是 否 为 空 Log.i(" 您 选 择 的 性 别 是 :", radio.gettext().tostring()); Log.i(" 您 选 择 的 性 别 是 :", " 无 "); String like = ""; if (like1.ischecked()) { // 复 选 框 是 否 被 选 中 like = like + like1.gettext().tostring() + " "; // 省 略 其 他 四 个 复 选 框 的 判 断 if ("".equals(like.trim())) { Log.i(" 您 的 兴 趣 是 :", " 无 "); else { Log.i(" 您 的 兴 趣 是 :", like); // 没 有 复 选 框 被 选 中 上 述 代 码 中, 在 获 取 单 选 按 钮 的 值 时, 首 先 通 过 单 选 按 钮 组 的 id 来 获 取 单 选 按 钮 组, 然 后 为 其 添 加 OnCheckedChangeListener 监 听 器, 并 在 oncheckedchanged() 方 法 中 根 据 参 数 checkedid 获 取 被 选 中 的 单 选 按 钮, 并 将 声 明 的 RadioButton 对 象 实 例 化 如 果 radio 为 空, 表 示 未 选 中 该 单 选 按 钮 组 中 的 任 何 一 个 单 选 按 钮 ; 若 不 为 空, 则 通 过 radio.gettext().tostring() 方 法 将 单 选 按 钮 的 内 容 输 出, 并 用 Log.i(String tag,string msg) 添 加 到 日 志 文 件 中 在 获 取 复 选 框 值 的 时 候, 首 先 通 过 复 选 框 的 id 来 获 取 复 选 框 对 象, 然 后 为 其 添 加 OnCheckedChangeListener 监 听 器, 并 在 oncheckedchanged() 方 法 中 根 据 方 法 ischecked() 来 获 取 该 复 选 框 是 否 被 选 中 如 果 被 选 中, 则 通 过 like = like + like1.gettext().tostring() + " " 将 获 取 的 复 选 框 所 对 应 的 值 拼 接 到 字 符 串 like 中 最 后 再 根 据 "".equals(like.trim()) 来 判 断 该 like 字 符 串 是 否 为 空, 为 空 则 表 示 未 选 中 任 何 一 个 复 选 框 运 行 该 项 目 后, 未 选 择 性 别 和 兴 趣 时 效 果 如 图 5-7 所 示 选 择 性 别 和 兴 趣 后 效 果 如 图 5-8 所 示 图 5-7 未 选 择 性 别 和 兴 趣 图 5-8 选 择 性 别 和 兴 趣 119

Android 开 发 课 堂 实 录 单 击 确 定 按 钮 后, 在 日 志 控 制 台 中 输 出 选 中 的 性 别 和 兴 趣 如 图 5-9 所 示 图 5-9 在 日 志 控 制 台 中 输 出 选 中 的 性 别 和 兴 趣 5.4 列 表 选 择 框 列 表 选 择 框 (Spinner) 控 件 与 网 页 中 的 下 拉 列 表 框 类 似, 通 常 是 提 供 一 些 可 选 择 的 列 表 项 以 提 供 用 户 选 择 在 使 用 列 表 选 择 框 的 时 候, 需 要 在 XML 布 局 文 件 中 加 入 <Spinner> 标 记 来 实 现, 其 基 本 语 法 格 式 如 下 所 示 <Spinner android:entries="@array/type" android:id="@+id/spinner"/> 在 上 述 代 码 中,entries 为 可 选 属 性, 用 于 指 定 列 表 项 通 常 是 在 项 目 下 的 res\values 中 新 建 一 个 XML 文 件, 用 于 添 加 列 表 项 的 数 组 资 源 文 件, 其 代 码 格 式 如 下 所 示 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="type"> <item> 水 果 </item> <item> 蔬 菜 </item> <item> 衣 服 </item> <item> 电 器 </item> <item> 其 他 </item> </string-array> </resources> 其 中 string-array name="type" 表 示 该 数 组 资 源 名 称, 也 是 在 Spinner 中 entries 属 性 所 引 用 的 内 容 如 果 entries 属 性 不 指 定 时, 也 可 以 在 Java 代 码 中 通 过 为 其 指 定 适 配 器 的 方 式 来 指 定 数 组 资 源 提 示 通 常 情 况 下, 如 果 列 表 选 择 框 中 要 显 示 的 列 表 项 是 已 知 的, 那 么 可 以 将 其 内 容 保 存 在 数 组 资 源 中, 然 后 通 过 数 组 资 源 来 为 列 表 选 择 框 指 定 列 表 项 练 习 5 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_05, 实 现 列 表 选 择 框 加 载 已 知 的 数 组 资 源 (1) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 并 添 加 一 个 列 表 选 择 框 控 件, 其 代 码 如 下 所 示 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" 120

SPSS 第 5 课 Android 基 础 控 件 详 解 android:layout_height="match_parent" android:orientation="vertical"> <Spinner android:entries="@array/type" android:id="@+id/spinner"/> </LinearLayout> 在 上 述 代 码 中, 为 Spinner 添 加 了 一 个 名 称 为 type 的 字 符 串 数 组 (2) 在 项 目 中 的 res\values 目 录 中 新 建 数 组 资 源 文 件 arrays.xml, 在 该 文 件 中 添 加 一 个 字 符 串 数 组, 名 称 为 type, 具 体 代 码 如 下 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="type"> <item> 水 果 </item> <item> 蔬 菜 </item> <item> 衣 服 </item> <item> 电 器 </item> <item> 其 他 </item> </string-array> </resources> (3) 在 com.android.activity 包 中 的 MainActivity.java 文 件 中, 为 Spinner 控 件 添 加 选 择 列 表 项 事 件 监 听 器, 以 此 来 获 取 列 表 选 择 框 所 选 定 的 内 容, 其 主 要 代 码 如 下 所 示 protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Spinner spinner = (Spinner) findviewbyid(r.id.spinner); // 获 取 Spinner 对 象 spinner.setonitemselectedlistener(new spinneronitemselected- Listener());// 添 加 监 听 器 class spinneronitemselectedlistener implements OnItemSelectedListener{ public void onitemselected(adapterview<?> arg0, View arg1, int arg2,long arg3) { Log.i(" 您 选 择 了 :", arg0.getitematposition(arg2).tostring()); // 添 加 到 日 志 //Log.i(" 您 选 择 了 :", arg0.getselecteditem().tostring()); public void onnothingselected(adapterview<?> arg0) { 在 上 述 代 码 中, 为 选 择 列 表 框 添 加 了 OnItemSelectedListener 事 件 监 听 器, 当 选 择 选 择 列 表 框 中 的 某 一 项 时 会 触 发 监 听, 通 过 使 用 getselecteditem() 方 法 获 取 到 选 择 项 的 值, 并 输 出 在 Log 控 制 台 121

Android 开 发 课 堂 实 录 运 行 该 项 目,Spinner 控 件 的 运 行 效 果 如 图 5-10 所 示 选 择 列 表 选 择 框 的 效 果 如 图 5-11 所 示 图 5-10 Spinner 控 件 的 运 行 效 果 图 5-11 选 择 列 表 框 中 选 项 的 效 果 选 中 选 择 列 表 框 时, 在 控 制 台 输 出 的 日 志 信 息 如 图 5-12 所 示 图 5-12 控 制 台 输 出 选 择 列 表 框 选 中 的 内 容 上 述 练 习 的 前 提 是 选 择 列 表 框 中 所 要 显 示 的 列 表 项 是 已 知 的, 下 面 将 讲 述 如 果 不 在 XML 布 局 文 件 中 配 置 Spinner 控 件 的 entries 属 性, 通 过 在 Java 代 码 中 定 义 数 组 来 实 现 练 习 6 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_06, 通 过 为 选 择 列 表 框 加 载 适 配 器 来 实 现 选 择 列 表 框 的 显 示 (1) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 并 添 加 一 个 列 表 选 择 框 控 件, 其 代 码 如 下 所 示 <Spinner android:id="@+id/spinner"/> 由 于 要 通 过 指 定 适 配 器 来 实 现 选 择 列 表 框, 这 里 就 不 再 指 定 数 组 资 源 (2) 在 com.android.activity 包 中 的 MainActivity.java 文 件 中, 为 Spinner 控 件 添 加 选 择 列 表 项 事 件 监 听 器, 并 为 其 指 定 适 配 器, 以 此 来 获 取 列 表 选 择 框 所 选 定 的 内 容, 其 主 要 代 码 如 下 // 省 略 部 分 代 码 Spinner spinner = (Spinner) findviewbyid(r.id.spinner); String type[] = new String[]{" 水 果 "," 蔬 菜 "," 衣 服 "," 电 器 "," 其 他 "; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout. simple_spinner_item, type); adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_it em);// 为 适 配 器 设 置 列 表 框 下 拉 的 选 项 样 式 spinner.setadapter(adapter); // 适 配 器 与 选 择 列 表 框 关 联 spinner.setonitemselectedlistener(new spinneronitemselectedlistener()); // 省 略 部 分 代 码 122

SPSS 第 5 课 Android 基 础 控 件 详 解 上 述 代 码 中 的 选 择 列 表 项 事 件 监 听 器 与 练 习 5 中 的 一 样 在 Java 文 件 中 使 用 字 符 串 数 组 创 建 适 配 器, 首 先 要 创 建 一 个 一 维 数 组, 用 于 保 存 下 拉 列 表 框 显 示 的 内 容, 然 后 使 用 ArrayAdapter 类 的 构 造 方 法 ArrayAdapter(Context context,int textviewresourceid,t[] objects) 实 例 化 一 个 ArrayAdapter 类 的 实 例 之 后 通 过 setdropviewresource() 方 法 为 适 配 器 设 置 下 拉 列 表 框 的 选 项 样 式, 然 后 使 用 setadapter() 将 适 配 器 与 选 择 列 表 框 关 联 运 行 该 项 目,Spinner 控 件 的 运 行 效 果 如 图 5-13 所 示 选 择 列 表 选 择 框 的 效 果 如 图 5-14 所 示 图 5-13 Spinner 控 件 的 运 行 效 果 图 5-14 选 择 列 表 框 中 选 项 的 效 果 选 中 选 择 列 表 框 时, 在 控 制 台 输 出 的 日 志 信 息 如 图 5-15 所 示 图 5-15 控 制 台 输 出 选 择 列 表 框 选 中 的 内 容 5.5 列 表 视 图 列 表 视 图 (ListView) 在 Android 中 以 垂 直 列 表 的 形 式 列 出 需 要 显 示 的 列 表 项 在 Android 中 可 以 使 用 两 种 方 法 向 屏 幕 中 添 加 列 表 视 图 一 种 是 直 接 使 用 ListView 控 件 在 XML 布 局 文 件 中 配 置 ; 另 一 种 是 让 Activity 继 承 ListActivity 来 实 现 下 面 将 详 细 介 绍 这 两 种 实 现 方 法 5.5.1 使 用 ListView 控 件 创 建 列 表 视 图 在 XML 布 局 文 件 中 添 加 <ListView> 标 记 来 实 现 使 用 ListView 创 建 列 表 视 图, 这 与 其 他 控 件 的 配 置 基 本 相 同, 其 基 本 语 法 格 式 如 下 <ListView android:entries="@array/type" android:layout_width="match_parent" android:id="@+id/listview"/> 与 列 表 选 择 框 的 语 法 格 式 一 样, 在 上 述 代 码 中,entries 为 可 选 属 性, 用 于 指 定 列 表 项, 也 可 以 不 设 置 该 属 性, 在 Java 代 码 中 通 过 为 其 指 定 适 配 器 的 方 式 来 指 定 数 组 资 源 123

124 Android 开 发 课 堂 实 录 ListView 支 持 的 XML 属 性 如 表 5-2 所 示 android:divider android:dividerheight android:entries 表 5-2 ListView 支 持 的 XML 属 性 属 性 名 称 描 述 android:footerdividersenabled android:headerdividersenabled 用 于 为 列 表 视 图 设 置 分 隔 条, 既 可 以 用 颜 色 分 割, 也 可 以 用 Drawable 资 源 分 离 用 于 设 置 分 隔 条 的 高 度 用 于 通 过 数 组 资 源 为 ListView 指 定 列 表 项 用 于 设 置 是 否 在 footer View 之 前 绘 制 分 隔 条, 默 认 为 true, 设 置 为 false 时, 表 示 不 绘 制 使 用 该 属 性 时, 需 要 通 过 ListView 控 件 提 供 的 addfooterview() 方 法 为 ListView 设 置 footer View 用 于 设 置 是 否 在 footer View 之 后 绘 制 分 隔 条, 默 认 为 true, 设 置 为 false 时, 表 示 不 绘 制 使 用 该 属 性 时, 需 要 通 过 ListView 控 件 提 供 的 addheaderview() 方 法 为 ListView 设 置 header View ListView 指 定 的 外 观 形 式 通 常 有 以 下 几 个 simple_list_item_1 每 个 列 表 项 都 是 一 个 普 通 的 文 本 simple_list_item_2 每 个 列 表 项 都 是 一 个 普 通 的 文 本 ( 字 体 略 大 ) simple_list_item_checked 每 个 列 表 项 都 有 一 个 选 中 的 列 表 项 simple_list_item_multiple_choice 每 个 列 表 项 都 是 带 复 选 框 的 文 本 simple_list_item_single_choice 每 个 列 表 项 都 是 带 单 选 按 钮 的 文 本 在 使 用 列 表 视 图 时, 与 列 表 选 择 框 一 样, 如 果 没 有 在 布 局 文 件 中 为 ListView 指 定 要 显 示 的 内 容, 也 可 以 通 过 为 其 设 置 Adapter 来 指 定 所 需 要 显 示 的 列 表 项 练 习 7 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_07, 使 用 ListView 控 件 来 创 建 列 表 视 图 (1) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 并 添 加 一 个 列 表 视 图 控 件, 其 代 码 如 下 所 示 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ListView android:entries="@array/type" android:layout_width="match_parent" android:id="@+id/listview"/> </LinearLayout> 在 上 述 代 码 中, 为 ListView 添 加 了 一 个 名 称 为 type 的 字 符 串 数 组 (2) 在 项 目 中 的 res\values 目 录 中 新 建 数 组 资 源 文 件 arrays.xml, 在 该 文 件 中 添 加 一 个 字 符 串 数 组, 名 称 为 type, 这 里 与 练 习 5 中 (2) 一 致, 这 里 就 省 略 了 (3) 在 com.android.activity 包 中 的 MainActivity.java 文 件 中, 为 ListView 控 件 添 加 事 件 监 听 器, 以 此 来 获 取 列 表 视 图 所 选 定 的 内 容, 其 主 要 代 码 如 下 ListView listview = (ListView) findviewbyid(r.id.listview); listview.setonitemclicklistener(new ListView.OnItemClickListener() { public void onitemclick(adapterview<?>arg0,view arg1,int arg2,long arg3) {

SPSS 第 5 课 Android 基 础 控 件 详 解 ); Log.i(" 您 选 择 了 :", arg0.getitematposition(arg2).tostring()); 在 上 述 代 码 中, 为 列 表 视 图 添 加 了 setonitemclicklistener 事 件 监 听 器, 当 选 择 选 择 列 表 框 中 的 某 一 项 时 会 触 发 监 听, 通 过 使 用 getitematposition(int position) 方 法 获 取 到 选 择 项 的 值, 并 输 出 在 Log 控 制 台 运 行 该 项 目, 列 表 视 图 运 行 效 果 如 图 5-16 所 示 当 选 中 某 一 列 表, 如 选 中 衣 服 时, 控 制 台 输 出 信 息 如 图 5-17 所 示 图 5-16 列 表 视 图 运 行 效 果 图 5-17 控 制 台 输 出 列 表 视 图 选 中 的 内 容 注 意 在 列 表 视 图 布 局 文 件 中 如 果 不 设 置 数 组 资 源, 不 配 置 ListView 控 件 的 entries 属 性, 那 么 也 可 以 通 过 在 Java 代 码 中 定 义 数 组 来 实 现 与 列 表 选 择 框 一 样, 也 是 通 过 设 置 适 配 器 来 实 现 5.5.2 Activity 继 承 ListActivity 实 现 列 表 视 图 如 果 程 序 的 窗 口 仅 仅 需 要 显 示 一 个 列 表, 那 么 就 可 以 使 用 Activity 继 承 ListActivity 来 实 现 继 承 了 ListActivity 的 类 不 需 要 调 用 setcontentview() 方 法 来 显 示 界 面, 而 是 可 以 直 接 为 其 设 置 适 配 器, 从 而 显 示 一 个 列 表 练 习 8 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_08, 通 过 让 Activity 继 承 ListActivity 来 实 现 列 表 视 图 在 com.android.activity 包 中 的 MainActivity.java 文 件 中 修 改 MainActivity 类, 使 其 继 承 ListActivity, 然 后 为 列 表 视 图 添 加 适 配 器, 并 使 用 setlistadapter() 方 法 将 其 添 加 到 列 表 中 为 了 单 击 ListView 各 个 列 表 时 获 取 到 选 择 项 的 值, 需 要 重 写 父 类 的 OnListItemClick() 方 法,MainActivity 的 主 要 方 法 如 下 protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); String type[] = new String[]{" 水 果 "," 蔬 菜 "," 衣 服 "," 电 器 "," 其 他 "; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.r. layout.simple_spinner_item,type); setlistadapter(adapter); protected void onlistitemclick(listview l, View v, int position, long id) { super.onlistitemclick(l, v, position, id); Log.i(" 您 选 择 了 :", l.getitematposition(position).tostring()); 125

Android 开 发 课 堂 实 录 在 上 述 代 码 中, 为 列 表 视 图 添 加 了 setonitemclicklistener 事 件 监 听 器, 当 选 择 选 择 列 表 框 中 的 某 一 项 时 会 触 发 监 听, 通 过 使 用 getitematposition(int position) 方 法 获 取 到 选 择 项 的 值, 并 输 出 在 Log 控 制 台 运 行 该 项 目, 列 表 视 图 运 行 效 果 如 图 5-18 所 示 当 选 中 某 一 列 表, 例 如 选 中 水 果 时, 控 制 台 输 出 信 息 如 图 5-19 所 示 126 图 5-18 列 表 视 图 运 行 效 果 图 5-19 控 制 台 输 出 列 表 视 图 选 中 的 内 容 5.6 图 像 视 图 图 像 视 图 (ImageView) 用 于 在 屏 幕 中 显 示 Drawable 对 象, 通 常 用 来 显 示 图 片 在 使 用 ImageView 控 件 为 程 序 加 载 图 片 时, 是 通 过 在 XML 布 局 文 件 中 添 加 <ImageView> 标 记 来 实 现 在 使 用 ImageView 控 件 显 示 图 像 时, 通 常 先 将 要 显 示 的 图 片 放 置 在 res/drawable 目 录 下, 然 后 将 其 显 示 在 布 局 管 理 器 中, 其 基 本 语 法 如 下 <ImageView android:src="@drawable/logo" android:id="@+id/imageview01"/> 在 上 述 代 码 中,android:src="@drawable/logo" 表 示 ImageView 所 显 示 的 Drawable 对 象 的 ID 为 logo ImageView 常 用 的 XML 属 性 如 表 5-3 所 示 表 5-3 ImageView 支 持 的 XML 属 性 属 性 名 称 描 述 android:adjustviewbounds android:baseline android:baselinealignbottom android:croptopadding android:maxheight android:maxwidth android:scaletype android:src android:tint 用 于 设 置 ImageView 是 否 调 整 自 己 的 边 界 来 保 持 所 需 要 显 示 图 片 的 长 度 变 化 在 视 图 中 的 偏 移 如 果 值 为 true, 图 像 的 视 图 将 基 线 对 齐 基 于 其 底 部 边 缘 如 果 设 置 为 true, 图 像 将 被 裁 剪 以 适 合 其 填 充 设 置 ImageView 的 最 大 高 度 (android:adjustviewbounds 属 性 值 为 true 时 起 作 用 ) 设 置 ImageView 的 最 大 宽 度 (android:adjustviewbounds 属 性 值 为 true 时 起 作 用 ) 用 于 设 置 所 显 示 的 图 片 如 何 缩 放 或 移 动 以 适 应 ImageView 的 大 小 用 于 设 置 ImageView 所 显 示 的 Drawable 对 象 的 ID 设 置 图 像 着 色 的 颜 色

SPSS 第 5 课 Android 基 础 控 件 详 解 练 习 9 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_09, 通 过 使 用 ImageView 控 件 来 显 示 图 片 (1) 在 项 目 res 目 录 下 的 drawable_ldpi 文 件 夹 中, 放 入 两 张 名 称 分 别 为 logo.gif 和 background.gif 的 图 片, 用 于 作 为 显 示 的 图 片 和 背 景 图 片 (2) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 改 为 线 性 布 局 在 其 中 添 加 一 个 ImageView 控 件, 其 代 码 如 下 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/background"> <ImageView android:src="@drawable/logo" android:id="@+id/imageview01" android:layout_margin="5dp"/> </LinearLayout> 上 述 代 码 中,android:background 属 性 为 该 程 序 指 定 了 背 景 图 片,android:src 属 性 指 定 了 所 要 显 示 图 片,android:layout_margin 表 示 该 控 件 的 边 距 (3) 在 布 局 管 理 器 中 添 加 一 个 ImageView 控 件, 并 设 置 该 控 件 的 最 大 高 度 和 宽 度, 具 体 代 码 如 下 <ImageView android:src="@drawable/logo" android:id="@+id/imageview02" android:layout_margin="5dp" android:adjustviewbounds="true" android:maxwidth="75dp" android:maxheight="50dp"/> 在 上 述 代 码 中,android:adjustViewBounds 用 于 设 置 ImageView 是 否 调 整 自 己 的 边 界 来 保 持 所 需 显 示 图 片 的 长 度 变 化, 为 true 时 表 示 调 整 自 己 的 边 界 来 保 持 所 需 显 示 图 片 的 长 度 变 化 ; android:maxwidth 和 android:maxheight 分 别 表 示 ImageView 的 最 大 宽 度 和 最 大 高 度 (4) 在 布 局 管 理 器 中 添 加 一 个 ImageView 控 件, 实 现 保 持 纵 横 比 缩 放 图 片, 直 到 该 图 片 能 完 全 显 示 在 ImageView 控 件 中, 并 让 该 图 片 显 示 在 ImageView 控 件 的 右 下 角, 具 体 代 码 如 下 <ImageView android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:id="@+id/imageview03" android:scaletype="fitend" android:layout_margin="5dp" android:background="#666666"/> 127

Android 开 发 课 堂 实 录 上 述 代 码 中,android:scaleType 用 于 设 置 所 显 示 的 图 片 如 何 缩 放 或 移 动 以 适 应 ImageView 的 大 小,fitEnd 表 示 保 持 纵 横 比 缩 放 图 片, 直 到 该 图 片 能 完 全 显 示 在 ImageView 中, 缩 放 完 成 后, 该 图 片 放 在 ImageView 的 右 下 角 (5) 在 布 局 管 理 器 中 添 加 一 个 ImageView 控 件, 实 现 为 显 示 在 ImageView 控 件 中 的 图 像 着 色 的 功 能, 具 体 代 码 如 下 <ImageView android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/logo" android:id="@+id/imageview04" android:tint="#77889900" android:layout_margin="5dp" android:background="#666666"/> 在 上 述 代 码 中,android:tint 用 于 给 图 片 着 色 运 行 该 项 目, 使 用 ImageView 显 示 图 像 的 效 果 如 图 5-20 所 示 图 5-20 应 用 ImageView 显 示 图 像 5.7 日 期 与 时 间 选 择 器 为 了 让 用 户 选 择 设 置 日 期 和 时 间,Android 提 供 了 日 期 / 时 间 选 择 器, 分 别 是 DatePicker 和 TimePicker 控 件 这 两 个 控 件 的 使 用 比 较 简 单, 可 以 在 Eclipse 的 可 视 化 界 面 设 计 器 中 选 择 对 应 的 控 件 放 在 布 局 文 件 中 下 面 将 详 细 介 绍 这 两 种 控 件 5.7.1 日 期 选 择 器 在 使 用 DatePicker 控 件 显 示 日 期 时, 通 常 是 使 用 <DatePicker> 标 记 在 XML 布 局 文 件 中 配 置, 其 基 本 语 法 如 下 128 <DatePicker android:id="@+id/datepicker" />

SPSS 第 5 课 Android 基 础 控 件 详 解 为 了 可 以 在 程 序 中 获 取 到 用 户 选 择 的 日 期, 需 要 为 DatePicker 控 件 添 加 事 件 监 听 器 其 事 件 监 听 器 是 OnDateChangedListener, 监 听 器 配 置 的 主 要 代 码 如 下 DatePicker date = (DatePicker) findviewbyid(r.id.datepicker); date.init(year, month, day, new dateondatechangetdlistener());. // 省 略 部 分 代 码 class dateondatechangetdlistener implements OnDateChangedListener{ public void ondatechanged(datepicker view, int year, int monthofyear, int dayofmonth) { MainActivity.this.year = year; MainActivity.this.month = monthofyear; MainActivity.this.day = dayofmonth; 5.7.2 时 间 选 择 器 在 使 用 TimePicker 控 件 显 示 时 间 时, 通 常 是 使 用 <TimePicker> 标 记 在 XML 布 局 文 件 中 配 置, 其 基 本 语 法 如 下 <TimePicker android:id="@+id/timepicker" /> 与 日 期 选 择 器 一 样, 使 用 时 间 选 择 器 时 也 要 添 加 事 件 监 听 器,TimePicker 控 件 的 事 件 监 听 器 是 OnTimeChangedListener 实 现 的 主 要 代 码 如 下 TimePicker time = (TimePicker) findviewbyid(r.id.timepicker); time.setontimechangedlistener(new timeontimechangedlistener()); // 省 略 部 分 代 码 class timeontimechangedlistener implements OnTimeChangedListener{ public void ontimechanged(timepicker view, int hourofday, int minute) { MainActivity.this.hour = hourofday; MainActivity.this.minute = minute; 练 习 10 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_10, 在 屏 幕 中 添 加 日 期 和 时 间 选 择 器, 在 改 变 日 期 和 时 间 时, 能 够 得 到 改 变 后 的 日 期 和 时 间 (1) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 然 后 添 加 一 个 TextView 控 件 一 个 DatePicker 控 件 和 TimePicker 控 件, 其 代 码 如 下 所 示 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/text" 129

Android 开 发 课 堂 实 录 /> <DatePicker android:id="@+id/datepicker" /> <TimePicker android:id="@+id/timepicker" /> </LinearLayout> 上 述 代 码 中,TextView 是 用 来 显 示 日 期 和 时 间 (2) 在 com.android.activity 包 中 的 MainActivity.java 文 件 中, 为 DatePicker 和 TimePicker 控 件 添 加 事 件 监 听 器, 来 获 取 到 用 户 选 择 的 日 期 和 时 间, 其 主 要 代 码 如 下 private int year = -1; private int month = -1; private int day = -1; private int hour = -1; private int minute = -1; private TextView text = null; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); DatePicker date = (DatePicker) findviewbyid(r.id.datepicker); // 获 取 日 期 选 择 器 控 件 TimePicker time = (TimePicker) findviewbyid(r.id.timepicker); // 获 取 时 间 选 择 器 控 件 text = (TextView) findviewbyid(r.id.text); time.setis24hourview(true); // 设 置 时 间 为 24 小 时 制 式 Calendar calendar = Calendar.getInstance(); // 创 建 日 历 对 象 year = calendar.get(calendar.year); // 获 取 当 前 年 份 month = calendar.get(calendar.month); // 获 取 当 前 月 份 day = calendar.get(calendar.day_of_month); // 获 取 当 前 日 hour = calendar.get(calendar.hour_of_day); // 获 取 当 前 小 时 minute = calendar.get(calendar.minute); // 获 取 当 前 分 钟 date.init(year, month, day, new dateondatechangetdlistener()); // 为 日 期 添 加 监 听 器 time.setontimechangedlistener(new timeontimechangedlistener()); // 为 时 间 添 加 监 听 器 text.settext(" 现 在 是 :" + year+" 年 "+(month+1)+" 月 "+day+" 日 "+hour+" 时 "+minute +" 分 ");// 设 置 文 本 框 内 容 class dateondatechangetdlistener implements OnDateChangedListener{ public void ondatechanged(datepicker view, int year, int monthofyear, int dayofmonth) { MainActivity.this.year = year; // 改 变 year 的 值 MainActivity.this.month = monthofyear; // 改 变 month 的 值 130

SPSS 第 5 课 Android 基 础 控 件 详 解 MainActivity.this.day = dayofmonth; // 改 变 day 的 值 show(year, month, day, hour, minute); // 在 文 本 框 内 显 示 日 期 和 时 间 class timeontimechangedlistener implements OnTimeChangedListener{ public void ontimechanged(timepicker view, int hourofday, int minute) { MainActivity.this.hour = hourofday; // 改 变 hour 的 值 MainActivity.this.minute = minute; // 改 变 minute 的 值 show(year, month, day, hour, minute); // 在 文 本 框 内 显 示 日 期 和 时 间 private void show(int year,int month,int day,int hour,int minute){ // 用 于 获 取 选 择 的 日 期 和 时 间 text.settext(" 您 选 择 的 日 期 是 :" + year+" 年 "+(month+1)+" 月 "+day+" 日 "+hour+" 时 "+minute +" 分 "); 注 意 由 于 通 过 DatePicker 对 象 获 取 到 的 月 份 是 0~11 月, 所 以 需 要 将 获 取 到 的 月 份 加 1, 才 能 代 表 真 正 的 月 份 运 行 该 项 目 后, 屏 幕 上 显 示 的 效 果 如 图 5-21 所 示, 当 改 变 日 期 时, 屏 幕 上 显 示 的 效 果 如 图 5-22 所 示, 当 改 变 时 间 时, 屏 幕 上 显 示 的 效 果 如 图 5-23 所 示 图 5-21 项 目 运 行 效 果 图 图 5-22 改 变 日 期 时 效 果 图 图 5-23 改 变 时 间 时 效 果 图 5.8 计 时 器 计 时 器 (Chronometer) 控 件 可 以 显 示 从 某 个 起 始 时 间 开 始, 一 共 过 去 了 多 长 时 间 由 于 该 控 件 继 承 TextView, 所 以 它 以 文 本 的 形 式 显 示 内 容 一 般 在 使 用 该 控 件 的 时 候, 会 调 用 以 下 几 个 方 法 setbase(long base) 设 置 计 时 器 计 时 的 基 准 ( 开 始 ) 时 间 setformat(string format) 设 置 用 于 格 式 化 显 示 格 式 的 字 符 串, 计 时 器 将 用 MM:SS 或 H:MM:SS 形 式 的 值 替 换 格 式 化 字 符 串 中 的 第 一 个 %s 131

Android 开 发 课 堂 实 录 setonchronometerticklistener(onchronometerticklistener listener) 设 置 计 时 器 变 化 时 调 用 的 监 听 器 start() 开 始 计 时, 该 操 作 不 会 影 响 到 由 setbase(long) 设 置 的 基 准 ( 开 始 ) 时 间, 仅 影 响 显 示 的 视 图 stop() 停 止 计 时, 不 会 影 响 用 setbase(long) 方 法 设 置 的 基 准 ( 开 始 ) 时 间, 只 影 响 视 图 的 显 示 在 使 用 计 时 器 控 件 时, 需 要 在 XML 布 局 文 件 中 添 加 <Chronometer> 标 记, 其 主 要 代 码 如 下 <Chronometer android:id="@+id/chronometer" /> 练 习 11 在 Eclipse 中 创 建 一 个 Android 项 目, 名 称 为 ch05_11, 在 屏 幕 中 添 加 一 个 计 时 器 (1) 在 项 目 中 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 然 后 添 加 一 个 Chronometer 控 件 和 一 个 普 通 按 钮 控 件, 其 代 码 如 下 所 示 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Chronometer android:id="@+id/chronometer"/> <Button android:id="@+id/rest" android:text="@string/rest" android:visibility="gone"/> </LinearLayout> 上 述 代 码 中,Button 控 件 的 android:visibility 属 性 用 来 设 置 该 控 件 的 可 见 与 不 可 见 的 状 态, 设 置 为 gone 表 示 不 可 见 并 且 不 占 用 空 间 (2) 在 com.android.activity 包 中 的 MainActivity.java 文 件 中, 获 取 计 时 器 控 件, 并 设 置 起 始 时 间 和 显 示 时 间 的 格 式, 开 启 计 时 器 等, 其 代 码 如 下 private Chronometer chronometer = null; private Button rest = null; protected void oncreate(bundle savedinstancestate) { // 省 略 部 分 代 码 rest = (Button) findviewbyid(r.id.rest); // 获 取 按 钮 控 件 chronometer = (Chronometer) findviewbyid(r.id.chronometer); // 获 取 计 时 器 控 件 chronometer.setbase(systemclock.elapsedrealtime());// 设 置 起 始 时 间 chronometer.setformat(" 已 用 时 间 :%s"); // 设 置 显 示 时 间 的 格 式 chronometer.start(); // 开 启 计 时 器 132

SPSS 第 5 课 Android 基 础 控 件 详 解 chronometer.setonchronometerticklistener(new chronometerlistener()); rest.setonclicklistener(new restonclicklistener()); class restonclicklistener implements OnClickListener{ public void onclick(view v) { chronometer.setbase(systemclock.elapsedrealtime()); // 设 置 起 始 时 间 chronometer.start(); // 开 启 计 时 器 rest.setvisibility(view.gone); // 设 置 Button 控 件 不 可 见 class chronometerlistener implements OnChronometerTickListener{ public void onchronometertick(chronometer chronometer) { if (SystemClock.elapsedRealtime() - chronometer.getbase() >= 10000) { chronometer.stop(); // 停 止 计 时 器 rest.setvisibility(view.visible); // 设 置 Button 控 件 可 见 上 述 代 码 中, 先 获 取 到 计 时 器 控 件, 然 后 使 用 setbase(systemclock.elapsedrealtime()) 方 法 为 计 时 器 设 置 起 始 时 间,setFormat() 为 计 时 器 设 置 格 式, 然 后 使 用 start() 方 法 开 启 计 时 器 在 监 听 器 中 判 断 如 果 (SystemClock.elapsedRealtime() - chronometer.getbase() >= 10000) 为 真, 则 使 用 stop() 方 法 来 停 止 计 时 器, 并 且 使 用 setvisibility() 方 法 设 置 Button 控 件 可 见 在 按 钮 控 件 的 监 听 器 中 为 计 时 器 添 加 了 起 始 时 间 和 开 启 计 时 器 的 方 法, 在 单 击 按 钮 的 时 候, 计 时 器 将 重 新 开 始, 同 时 Button 控 件 设 置 为 不 可 见 运 行 该 项 目, 计 时 器 显 示 效 果 如 图 5-24 所 示 当 计 时 器 停 止 时 如 图 5-25 所 示 图 5-24 计 时 器 运 行 时 效 果 5.9 图 5-25 计 时 器 停 止 时 效 果 实 例 应 用 : 设 计 用 户 注 册 界 面 5.9.1 实 例 目 标 根 据 本 课 所 讲 内 容, 设 计 一 个 用 户 注 册 界 面, 在 其 中 要 使 用 到 本 课 所 讲 的 基 础 控 件, 如 文 本 框 编 辑 框 按 钮 复 选 框 等 控 件 133

Android 开 发 课 堂 实 录 134 5.9.2 技 术 分 析 首 先 在 布 局 文 件 中 使 用 控 件 的 标 记 来 配 置 所 需 要 的 各 个 控 件, 然 后 在 主 Activity 中 获 取 到 该 控 件, 给 其 添 加 监 听 器 来 监 听 其 操 作, 最 后 在 控 制 台 输 出 所 操 作 的 内 容 5.9.3 实 现 步 骤 在 Eclipse 中 创 建 Android 项 目, 名 称 为 ch05 设 计 一 个 用 户 注 册 界 面, 在 其 中 要 使 用 到 文 本 框 编 辑 框 按 钮 单 选 按 钮 复 选 框 列 表 选 择 框 列 表 视 图 图 片 视 图 等 控 件 (1) 在 项 目 res 目 录 下 的 drawable_ldpi 文 件 夹 中, 放 入 两 张 名 称 分 别 为 logo.gif 和 background.gif 的 图 片, 用 于 作 为 显 示 的 logo 图 片 和 背 景 图 片 (2) 在 项 目 的 res\values 目 录 中 新 建 数 组 资 源 文 件 arrays.xml, 在 该 文 件 中 添 加 两 个 字 符 串 数 组, 名 称 分 别 为 type 和 care, 具 体 代 码 如 下 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="type"> <item> 学 生 </item> <item> 老 师 </item> <item> 白 领 </item> <item> 工 程 师 </item> <item> 其 他 </item> </string-array> <string-array name="care"> <item>1. 保 护 用 户 个 人 信 息 是 汇 智 的 一 项 基 本 原 则 </item> <item>2. 用 户 在 本 网 站 上 不 得 发 布 违 法 信 息 </item> <item>3. 保 护 好 自 己 的 账 号 和 密 码 安 全 </item> <item>4. 本 网 站 所 有 权 和 解 释 权 归 本 网 站 拥 有 </item> </string-array> </resources> (3) 在 项 目 的 res\values 目 录 中 的 strings.xml 中 添 加 如 下 代 码 <string name="edit01"> 请 输 入 用 户 名 </string> <string name="edit02"> 请 输 入 密 码 </string> <string name="reg"> 注 册 </string> <string name="rest"> 重 置 </string> <string name="sex"> 请 选 择 您 的 性 别 </string> <string name="fav"> 请 选 择 您 的 兴 趣 </string> <string name="man"> 男 </string> <string name="woman"> 女 </string> <string name="checktext"> 我 同 意 上 述 条 款 </string> (4) 在 项 目 的 res/layout 目 录 下 修 改 activity_main.xml 文 件, 首 先 将 界 面 整 体 布 局 改 为 表 格 布 局, 并 设 置 背 景, 之 后 添 加 一 个 图 像 视 图 作 为 logo 图 像 显 示, 代 码 如 下 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

SPSS 第 5 课 Android 基 础 控 件 详 解 android:orientation="vertical" android:background="@drawable/background" > <ImageView android:src="@drawable/logo" android:id="@+id/imageview02" android:layout_margin="5dp" android:adjustviewbounds="true" android:maxwidth="75dp" android:maxheight="50dp"/> </TableLayout> 在 上 述 代 码 中,android:adjustViewBounds 用 于 设 置 ImageView 是 否 调 整 自 己 的 边 界 来 保 持 所 需 显 示 图 片 的 长 度 变 化, 为 true 时 表 示 调 整 自 己 的 边 界 来 保 持 所 需 显 示 图 片 的 长 度 变 化 ; android:maxwidth 和 android:maxheight 分 别 表 示 ImageView 的 最 大 宽 度 和 最 大 高 度 (5) 添 加 3 个 TableRow 表 格 行, 并 在 其 中 添 加 3 个 文 本 框 和 编 辑 框 控 件, 用 来 显 示 和 填 写 用 户 名 密 码 和 确 认 密 码, 这 与 练 习 2 中 的 步 骤 (2) 代 码 一 样, 在 这 里 就 省 略 了 (6) 添 加 一 个 线 性 布 局, 在 其 中 添 加 一 个 文 本 框 控 件 和 一 个 单 选 按 钮 组, 其 中 在 单 选 按 钮 组 中 添 加 两 个 单 选 按 钮 控 件, 这 与 练 习 4 中 的 步 骤 (1) 代 码 一 样, 在 这 里 省 略, 其 中 线 性 布 局 的 android:orientation 属 性 设 置 为 "horizontal" (7) 添 加 一 个 线 性 布 局, 在 其 中 添 加 一 个 文 本 框 控 件 和 一 个 列 表 选 择 框 控 件, 线 性 布 局 的 android:orientation 属 性 设 置 为 "horizontal", 列 表 选 择 框 控 件 代 码 与 练 习 5 中 步 骤 (1) 代 码 一 样, 在 此 省 略, 其 中 列 表 选 择 框 的 android:entries 属 性 为 "@array/care" (8) 添 加 一 个 文 本 框 控 件 列 表 视 图 控 件 复 选 框 控 件 和 一 个 普 通 按 钮 控 件, 代 码 如 下 <TextView android:text=" 服 务 条 款 " android:gravity="center_horizontal" /> <! 省 略 列 表 视 图 控 件 的 布 局 代 码 --> <CheckBox android:id="@+id/checkbox" android:text="@string/checktext"/> <Button android:id="@+id/reg" android:text="@string/reg" android:gravity="center_horizontal" android:visibility="invisible"/> 在 上 述 代 码 中, 文 本 框 控 件 的 android:gravity="center_horizontal" 表 示 文 本 框 控 件 在 屏 幕 中 水 平 放 置,android:textSize 表 示 字 体 大 小 ; 普 通 按 钮 中 的 android:visibility 属 性 表 示 该 控 件 是 否 可 见, 135