android 的android仿datepickerr怎么取出 年月日的值

Android学习笔记23:时间日期控件的使用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
Android学习笔记23:时间日期控件的使用
上传于||暂无简介
大小:5.21KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢&&&&&&&&&&&&&&&&&&&&&&&&& 1:51:42
&&网站联系: qq: email:&
Android开发资料网Android用户界面设计:日期选择器对话框
Android用户界面设计:日期选择器对话框
日期对话框,如下面所示的一个,产生从一个特殊的AlertDialog类称为DatePickerDialog(android.app.DatePickerDialog)。另外的AlertDialog类的所有功能,您可以使用DatePickerDialog收集用户输入的标准化日期。在这个快速教程中,我们提供了所需的步骤来实现的日期选择器“对话框中,从用户收集的日期(如生日)。
先决条件:对话基础
我们已经讨论了如何添加基本的“控制活动类。这的快速教程是建立在你的知识从本教程的Android用户界面设计:使用对话框教程。您可以添加对话框,对话框提供上述教程中的示例应用程序,或创建自己的应用程序。
第1步:定义一个新的日期选择器“对话框
现在,让我们添加另一个新的对话框,你的基本的Activity类。
编辑活动的Java类,并添加以下成员变量:
private static final int MY_DATE_DIALOG_ID = 3;
此代码定义一个唯一的对话为我们的Activity类的标识符。的值是任意的,但在活动中必须是唯一的。
第2步:创建DatePickerDialog
创建对话框的实例,你必须提供您的DatePickerDialog在onCreateDialog()方法,活动类。当ShowDialog()方法被调用时,它会触发调用此方法,它必须返回相应的对话框实例。在示例代码中,我们班的,我们有三个不同的对话框,因此我们将需要检查传入的对话标识符返回相应类型的对话框。
为您的新DatePickerDialog的具体情况声明在onCreateDialog()方法如下所示:
case MY_DATE_DIALOG_ID:
DatePickerDialog dateDlg = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth)
Time chosenDate = new Time();
chosenDate.set(dayOfMonth, monthOfYear, year);
long dtDob = chosenDate.toMillis(true);
CharSequence strDate = DateFormat.format("MMMM dd, yyyy", dtDob);
Toast.makeText(SuperSimpleDialogsActivity.this,
"Date picked: " + strDate, Toast.LENGTH_SHORT).show();
dateDlg.setMessage("When's Your Birthday?");
return dateD
在这里,我们创建了一个DatePickerDialog的一个新实例,配置它,并返回它。该结构是简单的。我们包括onDateSet()方法,当用户选择一个特定的日期,并按下“积极对话”按钮,这就是所谓的实现。我们还设置对话框的消息,以提示用户的出生日期。
注:我们使用的时间的类(android.text.format.Time)和DateFormat类(android.text.format.DateFormat)机器和人类可读的日期格式之间的转换。
第3步:初始化DatePickerDialog
回想一下,一个活动保持对话框,重用他们时,他们被显示。因为我们要初始化DatePickerDialog今天的日期,我们应该初始化它的活动在onPrepareDialog()方法。否则,第二次启动的DatePickerDialog,它会被设置为选定的日期以前的时间。假设我们想重用此对话框,所以我们要重设它每次对话框显示当前的日期。要做到这一点,我们必须更新onPrepareDialog()方法的活动。下面是这种方法的情况下,表内的具体DatePickerDialog:
case MY_DATE_DIALOG_ID:
DatePickerDialog dateDlg = (DatePickerDialog)
int iDay,iMonth,iY
Calendar cal = Calendar.getInstance();
iDay = cal.get(Calendar.DAY_OF_MONTH);
iMonth = cal.get(Calendar.MONTH);
iYear = cal.get(Calendar.YEAR);
dateDlg.updateDate(iYear, iMonth, iDay);
在这里,我们使用的日历类(java.util.Calendar的)来设置的的DatePickerDialog控制到今天的日期时间对话框显示的updateDate()方法。请注意,月份值是基于0的月份数(即10月将是9个月,本月10日)。
第4步:触发DatePickerDialog
最后,你准备触发您的DatePickerDialog显示的要求。例如,您可以添加另一个按钮控制活动的画面,触发您的DatePickerDialog显示。它的Click处理程序可能看起来像这样:
public void onDateDialogButtonClick(View v) {
showDialog(MY_DATE_DIALOG_ID);
关键词:&&&
日期对话框,如下面所示的一个,产生从一个特殊的AlertDialog类称为DatePickerDialog(android.app.DatePickerDialog)。另外的AlertDialog类的
分享给朋友:
2016&Copyright该学网()本站部分资源来自网友上传,如有侵权请邮件通知,我们将在3个工作日内删除。查看: 8437|回复: 16
android重写DatePickerDialog自由选取年月日的方法
该用户从未签到主题帖子e币
没有eoe的账号,级别还太低,出门如何吹牛逼?
才可以下载或查看,没有帐号?
本帖最后由 android_hejinxi 于
15:37 编辑
话不多说,直接上代码啦
最近遇到个需求。就是只选择年月。不要出现日。
那么使用DatePickerDialog是最好的选择,但是这个只能显示年月日,没有提供可选择的,
所以要重新该类,实现我们要显示的效果
网上有很多方法,大部分是可行的,但是有个明显的bug,就是不同的机子会出现不一样的效果
如在三星机子上(i9100)个人手机上面运行。完美。但是在HTC上面。妈的就出了问题。
本来显示的顺序是年 - 月 - 日。然后我重写时候把最后的一位隐藏掉。
但是HTC就是要坳人。非要显示日 - 月 - 年,所以运行后把年隐藏了,
所以我们要做判断。判断年出现还是日先出现,但是怎么弄额,我只能用笨的方法,判断谁的宽度长就可以啦,哈哈
&&* 重新了DatePickerDialog
&&* @author hejinxi&&*
class DatePickerDialogSon extends DatePickerDialog {
& && &&&public DatePickerDialogSon(Context context,
& && && && && & OnDateSetListener callBack, int year, int monthOfYear,
& && && && && & int dayOfMonth) {
& && && && &super(context, callBack, year, monthOfYear, dayOfMonth);
& && &&&@Override
& && &&&public void onDateChanged(DatePicker view, int year, int month, int day) {
& && && && &super.onDateChanged(view, year, month, day);
& && && && &this.setTitle(year+&年&+(month + 1) + &月&);
& &&&* 从当前Dialog中查找DatePicker子控件
& &&&* @param group
& &&&* @return
& & private DatePicker findDatePicker(ViewGroup group) {
& && &&&if (group != null) {
& && && && &for (int i = 0, j = group.getChildCount(); i & i++) {
& && && && && & View child = group.getChildAt(i);
& && && && && & if (child instanceof DatePicker) {
& && && && && && &&&return (DatePicker)
& && && && && & } else if (child instanceof ViewGroup) {
& && && && && && &&&DatePicker result = findDatePicker((ViewGroup) child);
& && && && && && &&&if (result != null)
& && && && && && && && &
& && && && && & }
& && && && &}
//显示开始时间
private void showDate(DatePickerDialog dialog){
&&dialog.show();
& & DatePicker dp = findDatePicker((ViewGroup) dialog.getWindow().getDecorView());
& && && &if (dialog != null) {
& && && & int width1 = ((ViewGroup) dp.getChildAt(0)).getChildAt(0).getLayoutParams(). //获取最前一位的宽度
& && && & int width2 = ((ViewGroup) dp.getChildAt(0)).getChildAt(2).getLayoutParams().//获取最后一位的宽度
& && && & if(width1&width2){&&//做匹配。如果前面一位大于后面一位的话。就意味着是年-月-日的显示方式。否则为倒换的。
& && && && &((ViewGroup) dp.getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
//隐藏最后一位
& && && & }else{
& && && && &((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
//隐藏前一位
& && && & }
& && && &&&
& && && &}
& && && && &
startDialog = new DatePickerDialogSon(this, new OnDateSetListener(){
& & @Override
& & public void onDateSet(DatePicker view, int year, int monthOfYear,
& && &int dayOfMonth) {
& &&&startTime.setText(year+&/&+(monthOfYear+1));
& &&&start=year+&-&+(monthOfYear+1);
& & },calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
在需要显示时间控件时候。调用 showDate(startDialog );这个方法就可以了。
我想应该不会出现个变态版的出现这样的年 - 日 -月把
签到天数: 24 天连续签到: 1 天[LV.4]偶尔看看III主题帖子e币
本帖最后由 yezihengok 于
16:12 编辑
,隐藏不仅跟日期格式,还跟手机版本有关,4.0上获取不到((ViewGroup) dp.getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
,在楼主的基础上添加这个试试
if(CheckinDetail.getAndroidSDKVersion()&14){
& && && && &int width1 = ((ViewGroup)(ViewGroup) dp.getChildAt(0)).getChildAt(0).getLayoutParams(). //获取最前一位的宽度
& && && && && &int width2 = ((ViewGroup)(ViewGroup) dp.getChildAt(0)).getChildAt(2).getLayoutParams().//获取最后一位的宽度
& && && && && &if(width1&width2){
& && && && && & //做匹配。如果前面一位大于后面一位的话。就意味着是年-月-日的显示方式。否则为倒换的。
& && && && && && & ((ViewGroup)(ViewGroup) dp.getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
& && && && && && & //隐藏最后一位
& && && && && &&&}else{
& && && && && && & ((ViewGroup)(ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
& && && && && && & //隐藏前一位
& && && && && &&&}
& &&&else{
& && &int width1 = ((ViewGroup) dp.getChildAt(0)).getChildAt(0).getLayoutParams(). //获取最前一位的宽度
& && && && &&&int width2 = ((ViewGroup) dp.getChildAt(0)).getChildAt(2).getLayoutParams().//获取最后一位的宽度
& && && && &&&if(width1&width2){&&//做匹配。如果前面一位大于后面一位的话。就意味着是年-月-日的显示方式。否则为倒换的。
& && && && && && &((ViewGroup) dp.getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
& && &//隐藏最后一位
& && && && && & }else{
& && && && && && &((ViewGroup) dp.getChildAt(0)).getChildAt(0).setVisibility(View.GONE);
& && &//隐藏前一位
& && && && && & }
签到天数: 24 天连续签到: 1 天[LV.4]偶尔看看III主题帖子e币
public static int getAndroidSDKVersion() {
//获得手机版本
& & & & & & & & int version = 0;
& & & & & & & & try {
& & & & & & & & version = Integer.valueOf(android.os.Build.VERSION.SDK);
& & & & & & & & } catch (NumberFormatException e) {
& & & & & & & & Log.e(&getAndroidSDKVersion&, e.toString());
& & & & & & & & }
& & & & & & & &
& & & & & & & & }
该用户从未签到主题帖子e币
感觉写的挺好的啊&&刚好用到&&谢谢楼主
该用户从未签到主题帖子e币
代码的背景色为什么搞个绿色?代码都看不清楚
该用户从未签到主题帖子e币
这不行!!!
width1 == width2 的,宽度一样大,所以总是
((ViewGroup) dp.getChildAt(0)).getChildAt(2).setVisibility(View.GONE);
而且我的问题是在我手机上运行总是((ViewGroup) dp.getChildAt(0)).getChildAt(2) 返回为空,导致空指针异常,仁兄是否可以解答下???
该用户从未签到主题帖子e币
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
该用户从未签到主题帖子e币
你有什么好的解决方案?&
该用户从未签到主题帖子e币
签到天数: 24 天连续签到: 1 天[LV.4]偶尔看看III主题帖子e币
你有什么好的解决方案?
签到天数: 9 天连续签到: 1 天[LV.3]偶尔看看II主题帖子e币
没有源码吗
该用户从未签到主题帖子e币
看看...........................
签到天数: 81 天连续签到: 1 天[LV.6]常住居民II主题帖子e币
背景色可不可以去掉?
该用户从未签到主题帖子e币
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
QQ已认证,此人靠谱
推荐阅读热门话题
619981864415415377323273272257254249224215210715
半小时前昨天&23:51昨天&22:04昨天&18:36昨天&18:26昨天&18:13昨天&17:31昨天&17:26昨天&16:30昨天&16:29昨天&16:21昨天&16:20昨天&15:47昨天&14:43昨天&14:25昨天&14:03
Powered by

我要回帖

更多关于 datepicker年月日时分 的文章

 

随机推荐