本篇继续学习高级控件及独具特色的监听器,目录如下:
- ScrollView 滚动视图
- ProgressBar 进度条
- ProgressDialog 对话框形式进度条
- SeekBar 可拖动进度条
- DataPicker 日历选择器
- DataPickerDialog 对话框形式日历选择器
- TimePicker 时间选择器
- TimePickerDialog 对话框形式时间选择器
1.ScrollView 滚动视图
当展示的内容很多屏幕显示不下时就需要用ScrollView来显示完整的视图。下图对比了有无ScrollView两种不同的情况:
可以看到当整个页面只有一个TextView时因为内容不完整视觉上感觉很不好,如果加上ScrollView,用户就可以滑动滚动条看到后面的内容。ScrollView使用起来也很容易,只要将TextView作为它的子标签就可以了,如果不想看到滚动条,可以设置属性android:scrollbars=”none”隐藏起来。另外,根据需要也可以使用水平滚动视图HorizantalScrollView,替换SrollView标签就可以了。
之后在MainActivity获取TextView实例并set内容,运行之后就能看到之前的效果了。
再介绍一个监听器OnTouchListener,它可以监听ScrollView滑行情况,比如希望用户看完文本后继续添加一些文本内容,那么就可以在监听到ScrollView到达底部的事件后做出相应的动作,代码见下:
有必要对上述代码做一些解释:从event.getAction()可以监听到滑块各种状态,其中一种状态MotionEvent.ACTION_MOVE表示滑块在滑动的过程中。接下来在判断文本处于最顶端还是最低端时,使用了ScrollView三个测量高度的方法:scrollView.getChildAt(0).getMeasuredHeight()表示ScrollView第一个子标签即TextView文本内容总长度,scrollView.getHeight()表示ScrollView高度即屏幕总高度, scrollView.getScrollY()表示滚动条滑动距离。易得出当滑动距离+屏幕总高度=文本总长度时,正好到达文本最低端。调试结果如图: