6 Android高级控件

6 Android高级控件

6.2 自动完成文本框

6.3 下拉列表

6.4 滚动视图

6.5 列表视图

6.6 网格视图

6.7 进度条与滑块

了解--------------------常用的高级控件介绍

掌握--------------------高级控件的基本使用和常用属性

重点--------------------高级控件的使用

1 自动完成文本框 AutoCompleteTextView

1. 自动完成文本框概述

自动完成文本框(AutoCompleteTextView)由文本框(EditText)派生而出,实际上它也是一个编辑框,但它比普通编辑框添加了一个功能:当用户输人一定字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择了某个菜单项后,自动完成文本框就会按用户选择自动填写该文本框。

在这里插入图片描述

2. 常用属性

AutoCompleteTextView间接继承自ViewGroup,因此AutoCompleteTextView也支持在ViewGroup中定义属性,这些属性可以看作是View的通用属性。除此之外的专属属性如下表所示:

控件属性描述
completionHint设置下拉菜单的提示标题
completionThreshold指定用户至少输入几个字符才会显示提示,默认为2
dropDownHeight设置下拉菜单的高度
dropDownHorizontalOffset指定下拉菜单与文本框之间水平偏移,下拉菜单默认与文本框左对齐
dropDownVerticalOffset指定下拉菜单与文本框之间垂直偏移,下拉菜单默认紧跟文本框
dropDownWidth指定下拉菜单的宽度
singleLine指定列表中的每个元素是否单行显示,true表示单行显示,false表示多行显示

3. 代码示例

在这里插入图片描述
文档:https://developer.android.google.cn/reference/android/widget/AutoCompleteTextView

2 下拉列表Spinner

1. 下拉列表(Spinner)概述

Spinner 组件是一种以下拉表的形式供用户快速进行数据输入的下拉控件,可以通过组件的 entries 属性绑定数据源,也可以通过数据适配器加载数据。
Spinner 组件可以使用下拉列表和对话框两种形式展示,通过 spinnerMode 属性控制。
通过设置 setOnItemSelectedListener 属性可以控制选择某个项后的操作。
在这里插入图片描述

2. 常用属性

Spinner间接继承自ViewGroup,因此Spinner也支持在ViewGroup中定义属性,这些属性可以看作是View的通用属性。除此之外的专属属性如下表所示:

控件属性描述
dropDownSelector列表框被选中时的背景
dropDownWidth设置下拉列表框的宽度
popupBackground设置列表框的背景
prompt设置对话框模式的列表框的提示信息(标题),只能够引用string.xml 中的资源id,而不能直接写字符串
spinnerModedialog:对话框风格的窗口 dropdown:下拉菜单风格的窗口(默认)
entries使用数组资源设置下拉列表框的列表项目

3. 代码示例(使用entries)

文档:https://developer.android.google.cn/reference/android/widget/Spinner
在这里插入图片描述

3. 代码示例(使用adapter)

文档:https://developer.android.google.cn/reference/android/widget/Spinner

在这里插入图片描述

3 滚动视图ScrollView、HorizontalScrollView

1. 滚动视图概述

手机屏幕的显示空间有限,常常需要上下滑动或左右滑动才能拉出其余页面内容,可惜一般的布局节点 都不支持自行滚动,这时就要借助滚动视图了。
滚动视图分为垂直方向和水平方向 两类,其中垂直滚动视图名为ScrollView,水平滚动视图名为HorizontalScrollView。
这两个滚动视图的 使用并不复杂,需要注意的是,滚动视图节点下面必须且只能挂着一个子控件,否则会在运行时报错。
在这里插入图片描述

2. 常用属性

ScrollView和HorizontalScrollView都直接继承了FrameLayout,因此也支持在FrameLayout中定义属性,在对宽度和高度进行设置时,需要注意:
垂直方向滚动时,layout_width属性值设置为match_parent,layout_height属性值设置为wrap_content。
水平方向滚动时,layout_width属性值设置为wrap_content,layout_height属性值设置为match_parent。

3.代码示例

文档: https://developer.android.google.cn/reference/android/widget/ScrollView
在这里插入图片描述

4 列表视图 ListView

1.列表视图(ListView)概述

官网文档: https://developer.android.google.cn/reference/android/widget/ListView

ListView是一种常用的展示列表数据的控件,它可以在应用中展示大量的数据,如联系人列表、歌曲列表等。

因为大部分的应用都需要展示一些列表数据,如新闻客户端需要展示新闻列表、社交应用需要展示好友列表等,所以ListView在安卓开发中是必不可少的。
在这里插入图片描述

2. 创建一个简单的ListView

在这里插入图片描述

3. ListView的点击事件处理

ListView支持的两种点击事件:
ItemClick事件:即单击某个ItemView时触发的事件;
ItemLongClick事件:即长按某个ItemView时触发的事件。

配置方式分别为:
调用ListView的setOnItemClickListener方法,入参为AdapterView.OnItemClickListener接口,需重写onItemClick方法;
调用ListView的setOnItemLongClickListener方法,入参为AdapterView.OnItemLongClickListener接口,需重写onItemLongClick方法。

4. 常用的数据适配器

ArrayAdapter,数据源格式要求:数组或List
SimpleAdapter,数据源格式要求:List<HashMap<String, Object>>
在这里插入图片描述

5. 自定义适配器

回顾前面使用到的ArrayAdapter:
在这里插入图片描述

自定义Adapter步骤:
自定义类MyAdapter,继承BaseAdapter;
重写getCount方法,返回数据源的数据个数;
重写getItem方法,返回指定的数据;
重写getItemId,返回指定数据的id;
重写getView,返回指定数据的布局样式。

6. 自定义适配器示例

需求:自定义一个适配器,使得每一项数据包括三个内容:图片、昵称和个性签名,如下图所示。

步骤1:创建一个MyItem类,用于表示一项数据;

在这里插入图片描述

步骤2:创建一个布局,拥有展示一项数据,包括一个ImageView和两个TextView;

在这里插入图片描述

步骤3-1:自定义一个适配器类MyItemApater,继承BaseAdapter,包括MyItem[]属性和Context属性;

在这里插入图片描述

步骤3-2:重写getView方法(关键);

getView方法就是向我们问第position项数据如何展示,我们返回什么View,它就直接显示什么出来。
在这里插入图片描述

步骤4:加一些数据测试自定义的适配器;

在这里插入图片描述

5 网格视图GridView

1.网格视图概述

官网文档: https://developer.android.google.cn/reference/android/widget/GridView

网格视图(GridView)是Android常用的规划容器,视图自身分为有行列的矩阵,用单元格放置自己的组件和内容,通常是放图片和文字。网格视图和列表视图有着共同的父类AbsListView,区别在于 ListView 显示的是一个列,而 GridView 可以控制列的数目。数据配置方面,GridView 和 ListView 类似,都要通过适配器进行数据配置。
在这里插入图片描述

2. 常用属性

控件属性描述
columnWidth列的宽度
gravity组件对齐方式
horizontalSpacing水平方向每个单元格的间距
verticalSpacing垂直方向每个单元格的间距
numColumns每行显示的列数
控件属性描述
stretchMode设置拉伸模式,可选值如下: none:不拉伸;spacingWidth:拉伸元素间的间隔空隙 columnWidth:仅仅拉伸表格元素自身 spacingWidthUniform:既拉元素间距又拉伸他们之间的间隔空袭

3. 代码示例

在这里插入图片描述

6 进度条与滑块ProgressBar、SeekBar

1. 进度条与滑块概述

进度条(ProgressBar)是UI界面中一种实用的UI组件。它用于显示一个耗时操作的百分比。(系统告诉我走到哪了)
滑块(SeekBar)用于对 Android 系统中的某项数值进行调节,如音量、亮度等。和进度条非常相似,进度条 ProgressBar 采用颜色填充来表明任务的进度,而滑块通过位置来标识数值,且允许用户拖动滑块来改变进度。(我告诉系统应该走到哪了)

在这里插入图片描述

2. 常用属性

ProgressBar属性名称功能描述
max进度条的最大值
progress进度条已完成进度值
progressDrawable轨道对应的Drawable对象
indeterminate如果设置成true,则进度条不精确显示进度
indeterminateDrawable设置不显示进度的进度条的Drawable对象
indeterminateDuration设置不精确显示进度的持续时间
secondaryProgress二级进度条
SeekBar属性名称功能描述
max滑动条的最大值
progress滑动条的当前值
secondaryProgress二级滑动条的进度
thumb滑块的drawable

3. 系统提供的进度条样式

在这里插入图片描述

4. 自定义进度条样式(无进度旋转)

在这里插入图片描述

5. 滑块的简单使用

在这里插入图片描述

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值