【转】Pro Android学习笔记(十七):用户界面和控制(5):日期和时间控件
DatePicker和TimePicker控件
使用DatePicker和TimePicker,故名思议,用户可以对时间进行选择。XML代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ...... >
<TextView ...... android:id="@+id/ui_date1"/>
<DatePicker android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ui_datepick"/>
<TextView ...... android:id="@+id/ui_time1"/>
<TimePicker android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ui_timepick"/>
</LinearLayout>
如果我们不在代码中设置日期和时间的值,初始时,DatePiker和TimePiker将设置为当前日期和时间。对于这两个控件,在代码中,我们可以它们进行读写操作。对于日期有:
TextView dateText = (TextView)findViewById(R.id.ui_date1);
dateText.setText("Set default date to 2013/1/1");
DatePicker dp = (DatePicker)findViewById(R.id.ui_datepick);
//对DatePicker进行设置,使用dp.init(year, monthOfYear, dayOfMonth, onDateChangedListener) ,需要注意,月份的有效值是“0-11”,例如dp.init(2013, 1, 1, null); 则是设置2013.2.1 。
dp.init(2013,0,1,new DatePicker.OnDateChangedListener() {
//通过onDateChangedListener对日期发生变化进行触发
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
//注意:会被触发两次。由于Picker实际上包含日历和日期转盘两部分(会自动同步),日历和日期变化产生两次触发。但日历变化可以自动使日期变化,即则通过日历的日期变化只触发一次。
Log.d("UiDateTimeTest","set Date to " + year+ "." + (monthOfYear+1)+"."+dayOfMonth);
}
});
dp.setCalendarViewShown(false); //不显示日历部分,只显示日期转盘部分
对于时间:
//设置时间发生变化的处理
TimePicker.OnTimeChangedListener timeChangedFunc = new TimePicker.OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
Log.d("UiDateTimeTest","Set time to "+hourOfDay + ":" + minute);
}
};
TextView timeText = (TextView)findViewById(R.id.ui_time1);
timeText.setText("Set default time to 16:00");
TimePicker tp = (TimePicker)findViewById(R.id.ui_timepick);
tp.setIs24HourView(true);
tp.setCurrentHour(16);
tp.setCurrentMinute(0);
tp.setOnTimeChangedListener(timeChangedFunc); //这里用匿名类方式时,Eclipse显示错误,所以本例直接用对象
DigitalClock和AnalogClock控件
数字时钟和模拟时钟如图所示。和其他的空间不同,我们不能对它所显示的时间进行修改,它们将显示系统的实时时间。使用它们的一个方便是,我们不需要进行代码编写,它们可以自动地不断地进行同步和更新时间。XML如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout …… >
<DigitalClock android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<AnalogClock android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
相关链接: 我的Android开发相关文章
最新文章
- Job for httpd.service failed because the control process exited with error code. See ";systemctl status httpd.service"; and ";journalctl -xe"; for details
- Android 不一样的原生分享
- Direct3D 10学习笔记(三)——文本输出
- Xamarin +vs2015 Android 开发GPS loaction 返回 null 小结
- BizTalk开发系列(三十一)配置和使用HTTP适配器
- uva 1629
- Python Logging 模块研究
- Python之路,Day4 - Python基础4 (new版)
- HDU Train Problem I 1022 栈模拟
- Oracle 奇葩的问题:创建存储过程没有反应
- 纯CSS3彩色边线3D立体按钮制作教程
- Codeforces 828B Black Square(简单题)
- 一次SSLPeerUnverifiedException,SSLHandshakeException问题的分析
- [译]《Sphinx权威指南》 - Sphinx入门
- ECharts.js学习动态数据绑定
- pickle file in matlab
- AspxGridView服务器事件列表
- [转]SQL Server 中WITH (NOLOCK)浅析
- shell脚本练习【转】
- Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location
热门文章
- Java和js的区别,以及Java和c的区别
- 深入 JavaScript 中的对象以及继承原理
- Python菜鸟之路:sqlalchemy/paramiko进阶
- ABAP OO 开发语法整理
- ABAP下载xml文件
- docker swarm部署spring cloud服务
- Data Structure Linked List: Write a function to get the intersection point of two Linked Lists.
- MySQL创建用户并授权及撤销用户权限
- Docker 命令篇
- assembly打包插件引发的自定义spring标签找不到声明的错误