Andriod之DatePickerDialog,禁用年份或者日期的某些按钮

原创 2013年12月01日 20:43:08

1.效果图


2.主界面,调用 MyDatePicker

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*1.响应开始日期设置按钮事件MainActivity.this*/
if(v == mBSDate){
    new MyDatePicker(MainActivity.this,
    new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
monthOfYear++;
String str=mETStart.getText().toString();
String fixedstr=str.substring(10);
String mMonthstr,mDaystr;
mMonthstr=""+monthOfYear;
mDaystr=""+dayOfMonth;
if(monthOfYear<10)
{
mMonthstr="0"+mMonthstr;
}
if(dayOfMonth<10)
{
mDaystr="0"+mDaystr;
}

str=year+"-"+mMonthstr+"-"+mDaystr+fixedstr;
mETStart.setText(str);
}},mCalendar.get(Calendar.YEAR),mCalendar.get(Calendar.MONTH),mCalendar.get(Calendar.DAY_OF_MONTH)
).show();
    }

}

3.定义 MyDatePicker


package com.example.parkbook;



import java.lang.reflect.Field;
import java.util.Calendar;
import java.util.Date;


import android.app.DatePickerDialog;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.LinearLayout;


/**
* 日期选择对话框


* @author hp
*
*/
public class MyDatePicker extends DatePickerDialog {
        public MyDatePicker(Context context, OnDateSetListener callBack, int year,
                        int monthOfYear, int dayOfMonth) {
                super(context, callBack, year, monthOfYear, dayOfMonth);
            
        }
        
        public MyDatePicker(Context context, OnDateSetListener callBack, int year,
                        int monthOfYear, int dayOfMonth,int type){
                super(context, callBack, year, monthOfYear, dayOfMonth);
               
        }
        /**
         * 
         */
        @Override
        public void onDateChanged(DatePicker view, int year, int month, int day) {
        //((ViewGroup) ((ViewGroup) view.getChildAt(0)).getChildAt(0)).getChildAt(2).setEnabled(false);
                        super.onDateChanged(view, year, month, day);
              
        }


        /**
         * 更新日期对话框


         */
        @Override
        public void updateDate(int year, int monthOfYear, int dayOfMonth) {
                super.updateDate(year, monthOfYear, dayOfMonth);
        }
        @Override  
        public void show() {  
            // TODO Auto-generated method stub  
            super.show();  
             DatePicker dp = findDatePicker((ViewGroup) this.getWindow().getDecorView());  
               if (dp != null) {  
                        ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(2).setEnabled(false); /*j禁用年的+-按钮*/

                  //  ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(1)).getChildAt(2).setEnabled(false); /*j禁用月的+-按钮*/
                    //((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(2)).getChildAt(2).setEnabled(false);/*j禁用日的+-按钮*/

                }   
        }  
        /** 
         * 从当前Dialog中查找DatePicker子控件 
         *  
         * @param group 
         * @return 
         */  
        private DatePicker findDatePicker(ViewGroup group) {  
            if (group != null) {  
                for (int i = 0, j = group.getChildCount(); i < j; i++) {  
                    View child = group.getChildAt(i);  
                    if (child instanceof DatePicker) {  
                        return (DatePicker) child;  
                    } else if (child instanceof ViewGroup) {  
                        DatePicker result = findDatePicker((ViewGroup) child);  
                        if (result != null)  
                            return result;  
                    }  
                }  
            }  
            return null;  
      

        }   


}

///////////////////////////////////////////////


DatePickerDialog用法及只显示年月隐藏日

DatePickerDialog用法及只显示年月隐藏日在代码中用法
  • cachecats
  • cachecats
  • 2017年02月28日 11:01
  • 262

Android安卓隐藏DatePickerDialog的年和日

/** * 隐藏 DatePicker的年和日 * * @param dialog */ private void hidYearDay(Dialog dialog) { in...
  • icewst
  • icewst
  • 2014年04月26日 17:45
  • 2784

未知的路

我是大一软件工程的一位学生,对于这个专业非常的陌生,对于未来的路也非常的迷茫......希望得到指点!...
  • xiaoduirs
  • xiaoduirs
  • 2010年05月22日 19:52
  • 107

如何把"设置--安全--未知来源“默认打开(mtk)

如果要修改该默认值,对op03来说,请修改 alps\mediatek\operator\op03\packages\apps\plugins\res\values\Defaults.xml ...
  • Evahuangchen
  • Evahuangchen
  • 2016年02月29日 14:15
  • 1719

android 修改DatePickerDialog只显示“年月”,去掉“日”显示

这两天在做一个项目,其中有个需求是让用户填写学业经历,那么只能选择年月,而不能出现日选择。通过在网上查资料,发现原理都是通过获取到Dialog布局中的年月日分别相对应的View,然后将其设置为GONE...
  • xyz326547445
  • xyz326547445
  • 2014年10月28日 15:07
  • 2647

DatePickerDialog和TimePickerDialog添加确认和取消按钮,优化显示

Android4.4以后DatePickerDialog和TimePickerDialog显示如下图所示,没有确定按钮和取消按钮,这是Android4.4的新特性,也有人认为这是Android4.4的...
  • chaichuanfa
  • chaichuanfa
  • 2015年01月08日 11:06
  • 2126

VS2012 ToolsVersion="12.0" 设置,但此工具集未知或缺失

VS2012 打开 VS2013创建的工程,会报错误: 项目文件包含 ToolsVersion="12.0" 设置,但此工具集未知或缺失。您可以通过为此工具集安装相应的 .NET Framewo...
  • sdsabc2000
  • sdsabc2000
  • 2017年04月04日 20:16
  • 7756

datePickerDialog年月选择弹框 自定义 拿来就用

先上效果图概述类似这种功能可以使用系统的控件来完成 datePickerDialog和timoPickerDialog 但是系统的只有一个完成按钮 没有取消按钮 系统的样式无法自定义 所以 搜了个自定...
  • u010838785
  • u010838785
  • 2017年01月06日 16:20
  • 12374

Android:解决DatePickerDialog只有完成按钮、没有取消按钮的问题

博客源址:Android:解决DatePickerDialog只有完成按钮、没有取消按钮的问题 博客时间:2015-3-24 (一)在Android 4.0以上系统的某些手机(如本人的测试机红米N...
  • Buaaroid
  • Buaaroid
  • 2015年12月16日 15:04
  • 3774
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Andriod之DatePickerDialog,禁用年份或者日期的某些按钮
举报原因:
原因补充:

(最多只允许输入30个字)