Input Controls-Pickers

来源:互联网 发布:云尚数据怎么样 编辑:程序博客网 时间:2024/05/07 15:12

Pickers

Android 为用户提供了选择时间和日期的选择器对话框。每个选择器提供用于选择每个部分的时间(小时、分钟,上午/下午)或日期(月、日、年)的操作。使用这些选择器控件可以确保用户选择的时间或日期是有效的,格式是正确的并且可以根据用户本地的时区去做适配。

我们推荐你使用DialogFragment控件来作为时间日期选择器的宿主,这样DialogFragment将会管理选择器的生命周期,并且允许你在不同的布局配置中显示选择器对话框,如在手机中作为基本的对话框显示,在平板上则作为布局的一部分显示。

虽然DialogFragment在Android3.0(API level 11) 被添加进来,但如果你的应用所支持的SDK版本低于3.0,你可以使用Android提供的向后兼容的支持库。

Note:以下代码例子展示了如何使用Android提供的支持库通过DialogFragment来创建时间选择器和日期选择器。如果你的应用设置的minSdkVersion >= 11,你可以使用SDK自带的api来开发。

Creating a Time Picker

为了使用DialogFragment显示TimePickerDialog,你需要自定义一个继承DialogFragment的类并覆写父类的onCreateDialog()返回一个TimePickerDialog.
Note:如果你的应用支持的SDK版本小于3.0,请确保你已经将Android提供的支持库导进了你的项目。 Setting Up a Project to Use a Library

Extending DialogFragment for a time picker

为了TimePickerDialog自定义DialogFragment,你必须实现以下两点:

覆写onCreateDialog()方法并返回一个TimePickerDialog实例

实现TimePickerDialog.OnTimeSetListener接口,当用户设置时间时接收回调并处理。
例子
public static class TimePickerFragment extends DialogFragment                            implements TimePickerDialog.OnTimeSetListener {    @Override    public Dialog onCreateDialog(Bundle savedInstanceState) {        // Use the current time as the default values for the picker        final Calendar c = Calendar.getInstance();        int hour = c.get(Calendar.HOUR_OF_DAY);        int minute = c.get(Calendar.MINUTE);        // Create a new instance of TimePickerDialog and return it        return new TimePickerDialog(getActivity(), this, hour, minute,                DateFormat.is24HourFormat(getActivity()));    }    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {        // Do something with the time chosen by the user    }}


TimePickerDialog中可以查看构造函数的形参
现在你只需将上面自定义的类添加进你的Activity即可。

Showing the time picker

当你像上面所说的自定义了一个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的实例和一个唯一的字符串标签作为形参传入。

Creating a Date Picker

创建一个DatePickerDialog跟上面创建TimePickerDialog一样,唯一不同的是你所创建的选择器对话框。

0 0
原创粉丝点击