6 Android高级控件
了解--------------------常用的高级控件介绍
掌握--------------------高级控件的基本使用和常用属性
重点--------------------高级控件的使用
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,而不能直接写字符串 |
spinnerMode | dialog:对话框风格的窗口 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 |