Android应用程序用户界面(十一)时间日期选择对话框
2015-09-20 13:14
441 查看
Android以现成的对话框的形式提供了支持用户选择时间或日期的控件。每个选择对话框提供了设置时间的各部分(小时,分钟和秒,上午/下午)或者日期的各个部分(月,日和年)。使用这些对话框可以确保你的用户能够选择一个有效的、形式正确,符合用户地域的时间或日期。
我们建议你使用
DialogFragment来包裹每一个时间或日期选择器。
DialogFragment为你管理对话框的生命周期,允许你在不同的布局配置中显示这些对话框,例如在移动电话界面中的基本对话框,或者是更大的屏幕的布局文件的嵌入部分。
尽管
DialogFragment在
Android 3.0(API 11)才被加入,如果你的应用程序的支持版本低于
3.0,甚至达到
1.6,你都可以使用为向后兼容而提供的支持库中的
DialogFragment类。
注意:下面的代码示例是显示如何使用支持库的
DialogFragment创建时间选择对话框和日期选择对话框。如果你的应用程序的
minSdkVersion是11或更高,你可以使用平台版本的
DialogFragment类。
创建一个时间选择对话框
为了使用DialogFragment显示一个时间选择对话框,你需要定义一个继承自
DialogFragment的
fragment类,并在这个
fragment的
onCreateDialog()方法中返回
TimePickerDialog的一个实例。
创建继承自DialogFragment
的类
为了使用DialogFragment显示一个时间选择对话框,你必须:
定义
onCreateDialog()方法,并返回一个
TimePickerDialog的实例。
实现
TimePickerDialog.OnTimeSetListener()接口以在用户设置时间时回调相应方法。
下面是一个例子:
public static class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // 使用当前时间作为时间选择对话框的默认值 final Calendar c = Calendar.getInstance(); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); //创建时间选择对话框的新实例并返回它 return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity())); } public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // 当用户选择时间时执行 } }
现在你需要做的就是为你的活动添加这个
fragment的实例。
显示时间选择对话框
一旦你向上面显示的那样定义了一个DialogFragment,你可以通过创建
DialogFragment的实例并调用它的show()方法显示时间选择对话框。
例如,下面是一个按钮,当用户点击该按钮时,调用一个方法显示这个对话框。
<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pick_time" android:onClick="showTimePickerDialog" />
当用户点击这个按钮时,系统会调用下面的方法:
public void showTimePickerDialog(View v) { DialogFragment newFragment = new TimePickerFragment(); newFragment.show(getSupportFragmentManager(), "timePicker"); }
这个方法调用上面定义的
DialogFragment的一个新实例的
show()方法。
show()方法需要一个
FragmentManager的实例和为这个
fragment指定的唯一的标签名。
小心:如果你的应用程序支持低于Android 3.0的版本,确保你调用getSupportFragmentManager()来获取FragmentManager的实例。也确保你的显示时间选择对话框的活动继承自FragmentActivity而不是标准的Activity类。
创建一个日期选择对话框
创建日期选择对话框和创建时间选择对话框一样。唯一的不同是你为fragment创建的对话框。
为了使用
DialogFragment显示一个日期选择对话框,你需要定义一个继承自
DialogFragment的类并且在这个
fragment的
onCreateDialog()方法中返回一个
DatePickerDialog.
创建继承自DialogFragment
的类
为了为日期选择对话框定义一个DialogFragment,你必须:
定义
onCreateDialog()方法并返回
DatePickerDialog的一个实例
实现
DatePickerDialog.OnDateSetListener接口以在用户设置日期时调用相应方法。
下面是一个例子:
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // 使用当前日期作为日期选择对话框的默认值 final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // 创建日期选择对话框的一个实例并返回它 return new DatePickerDialog(getActivity(), this, year, month, day); } public void onDateSet(DatePicker view, int year, int month, int day) { // 当用户设置日期时执行 } }
显示日期选择对话框
下面是一个按钮,当用户点击时,调用显示日期选择对话框的方法:<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pick_date" android:onClick="showDatePickerDialog" />
当用户点击按钮时,系统调用下面的方法:
public void showDatePickerDialog(View v) { DialogFragment newFragment = new DatePickerFragment(); newFragment.show(getSupportFragmentManager(), "datePicker"); }
该方法调用上面定义的
DialogFragment类的一个新实例的
show()方法。该方法需要一个
FragmentManager实例和为这个
fragment指定的唯一的标签名。
原文
http://wear.techbrood.com/guide/topics/ui/controls/pickers.html相关文章推荐
- Android学习实践:3.通过Intent打电话发短信
- Android onTouchEvent和setOnTouchListener中onTouch的区别
- 事件分发机制
- Android 动画效果(三):overridePendingTransition(界面切换动画)与LayoutTransition(布局动画)
- android — NDK生成so文件
- Android:LayoutParameter不匹配问题
- android SDK 安装目录结构详解及各工具
- CPU是AMD的电脑如何安装android studio,以及studio的环境变量的配置
- Android如何确定哪个APK正在偷流量的方法
- Android Studio + gradle + Androidannotations 配置记录
- Android,发现对于外部导入的工程,编译的时候不能够正常生成R.java文件的解决办法
- Android学习实践:2.创建另一个Activity并通过按钮单击打开
- Android 利用addView 动态给Activity添加View组件
- Android中RelativeLayout各个属性
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- AndroidStudio配置SVN以及使用代码管理
- 如何在android studio上使用SVN
- Android Action Bar 详解篇
- Android 属性动画(Property Animation 给按钮的添加添加动画效果,同样可以用在整个布局上) (下)(viewGroup创建对象竟然可以用布局的id)
- Error:Execution failed for task ': :dexDebug'. > com.android.ide.common.process.ProcessException: o