安卓 Pickers(选择器)

时间:2022-01-03 08:02:46

概述

安卓提供了现成的对话框,让用户选择一个时间或日期。每一个选择器控制时间(小时,分钟,AM/PM)或日期(月,日,年)的每一部分的选择。使用这些选择器帮助 确保用户正确的,格式化的,和适合的选择一个时间或日期。
我们推荐你使用DialogFragment 来容纳每一个时间或日期选择器。DialogFragment 为你管理对话框的生命周期并且允许你在不同的布局结构中显示该选择器,例如 手机中的基本对话框或在大屏幕中作为一部分嵌入。
尽管DialogFragment是在安卓3.0(API 11)才第一次出现,如果你的应用支持3.0更早的版本——即使是安卓1.6——你可以在support library使用DialogFragment 来向后兼容。
:下面是示例代码展示了为DialogFragment使用support library API来如何创建一个时间选择器和日期选择器。如果你的应用minSdkVersion 是11或之上,你可以直接使用DialogFragment.。

创建一个时间选择器

使用DialogFragment来展示一个时间选择对话框(TimePickerDialog),你需要定义一个继承自DialogFragment的fragment 类,并且从该fragment的onCreateDialog()方法中返回一个TimePickerDialog
:如果你的应用支持的版本为比安卓3.0更老,确保你的安卓工程使用了support library

将 DialogFragment延伸为时间选择器(time picker)

为一个TimePickerDialog 定义一个DialogFragment ,你必须:
这里有个例子:
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 类来了解更多关于该构造函数参数的信息
现在你所需要做的就是将这个fragment的实例添加到你的activity中。

展示时间选择器

一旦你像上面一样定义了一个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的唯一的标签名。
警告:如果你的应用支持安卓3.0及其以下版本,确保你在调用getSupportFragmentManager() 时获得了一个FragmentManager.的引用。也应该确保你展示该时间选择器的activity继承了FragmentActivity而不是标准的Activity 类。

创建日期选择器(Date Picker)

创建日期选择对话框(DatePickerDialog)和创建时间选择对话框(TimePickerDialog.)相似。唯一的不同将在于为对话框创建的fragment。
为使用DialogFragment来展示一个DatePickerDialog ,你需要定义一个继承自DialogFragment 的fragment类并且从fragment中的onCreateDialog()方法中返回一个DatePickerDialog
:如果你的应用支撑安卓3.0及更早的版本,确保你的工程中使用了安卓 support library 

将DialogFragment 延伸为日期选择器(date picker)

DatePickerDialog定义一个DialogFragment,你必须:
下面是个示例:
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
 
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
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);
 
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
 
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
}
}
查看 DatePickerDialog类来了解关于它构造函数参数的消息。
现在你只需要将这个fragment实例添加到你的activity中去了。

展示日期选择器

一旦你像上面展示的一样定义了一个DialogFragment,你可以通过创建一个DialogFragment的引用再调用show()来展示该日期选择器。
例如,这里有个按钮,当点击它时,调用一个方法来展示该对话框:
<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() 。show() 方法要求有一个FragmentManager的引用和fragment的唯一标签名。
警告:如果你的应用支持安卓3.0及其以下版本,确保你在调用getSupportFragmentManager() 时获得了一个FragmentManager.的引用。也应该确保你展示该时间选择器的activity继承了FragmentActivity而不是标准的Activity 类。

安卓 Pickers(选择器)的更多相关文章

  1. 安卓 Dialogs&lpar;对话框&rpar;

    转载自:http://www.apkbus.com/home.php?mod=space&uid=679028&do=blog&id=61197 对话框是一个小的窗口用以提示用 ...

  2. Android常用控件及对应Robotium API

    最近发现Android控件不熟悉,看Robotium的API都费劲. 常用Android控件: 控件类型 描述 相关类 Button 按钮,可以被用户按下或点击,以执行⼀个动作 Button Text ...

  3. react-native 插件汇总

    部分自己搜集 部分 来自别的网站 第三方路由插件 react-native-router-flux react-native-scrollable-tab-view 选项卡 测滑动菜单 react-n ...

  4. 安卓自动化测试,贺晓聪之uiautomator设备和选择器~Python详解

    1.设备对象 引入uiautomator,获取设备对象<所谓设备对象可理解为:Android模拟器或者真机> 语法:from uiautomator import device as d ...

  5. 安卓开发笔记(二十八):仿写IOS switch选择器控件实现,checkbox

    我们先来看看效果: 这里我们主要使用了github上的一个开源项目,配置起来比较方便,下面解释一下该如何使用:首先是:Gradle文件当中进行配置: dependencies { implementa ...

  6. 安卓开发&lowbar;浅谈DatePicker(日期选择器)

    DatePicker继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年.月.日的日期数据并允许用户对其修改.如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker ...

  7. 安卓开发&lowbar;浅谈TimePicker(时间选择器)

    TimePicker也继承自FrameLayout类.时间选择控件向用户显示一天中的时间(可以为24小时,也可以为AM/PM制),并允许用户进行选择.如果要捕获用户修改时间数据的事件,便需要为Time ...

  8. HTML5表单之Input 类型- Date Pickers(日期选择器)

    HTML5 拥有多个可供选取日期和时间的新输入类型: date-选取日.月.年 month-选取月.年 week-选取周和年 time-选取时间(小时和分钟) datetime-选取时间.日.月.年( ...

  9. 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)

    转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...

随机推荐

  1. Yii 2&period;x Behavior - 类图

    yii\base\Component  继承这个类的类都具备扩展行为的能力

  2. 对iOS后台模式最多10分钟运行时间的进一步理解

    在app进入后台时,系统初始默认是只有10s的处理时间,但如果10s不够,我们可以主动申请,网上流传最多的一个说法是10分钟. 但这种说法有个前提: 那就是iOS7之前,是这样 但从iOS7开始,我们 ...

  3. 左求值表达式,堆栈,调试陷阱与ORM查询语言的设计

    1,表达式的求值顺序与堆栈结构 “表达式” 是程序语言一个很重要的术语,也是大家天天写的程序中很常见的东西,但是表达式的求值顺序一定是从左到右么? C/C++语言中没有明确规定表达式的运算顺序(从左到 ...

  4. 【BZOJ】3211&colon; 花神游历各国

    题意 \(n\)个点,第\(i\)个点值为\(a_i\).\(m\)个询问,每次询问\([l, r]\)内的和或者将\([l, r]\)的每个值改为自己的算术平方根.(\(n \le 100000, ...

  5. android控件---自定义带文本的ImageButton

    由于SDK提供的ImageButton只能添加图片,不能添加文字:而Button控件添加的文字只能显示在图片内部:当我们需要添加文字在图片外部时就不能满足我们的需求了,顾只能自己写个自定义ImageB ...

  6. poj2337 欧拉路径

    poj2337 这道题昨天晚上开始做,今天才A.但是问题想透了, 发现其实没那么难 题目大意: 给你一些单词,如果一个单词的末尾字符与另一个单词首字符相同,则两个的单词可以连接.问是否可以把所有单词连 ...

  7. js对象,类

    js闭包网站:http://www.cnblogs.com/qieguo/p/5457040.html 有权访问另一个函数作用域内变量的函数都是闭包. 这里 inc 函数访问了构造函数 a 里面的变量 ...

  8. 推荐一个c&plus;&plus;小巧开源且跨平台的图像解码库

    该图像解码库仅仅三个文件. 图像处理封装: spot.cpp spot.h 解码库实现: spot.c 支持图片文件格式如下: File format Read Write BMP files yes ...

  9. 使用 ASP&period;NET Core MVC 创建 Web API(四)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使 ...

  10. linux 系统监控和进程管理

    1.命令top,查看cpu和内存使用,主要进程列表和占用资源. 2.内存使用命令foree -g 3.查询所有java进程:pgrep -l java     ------ps aux|grep .j ...