如何设置的Max&安培;敏时间车轮的DatePicker在Android中 [英] How Set Max & Min Date In WHEEL DatePicker In Android

查看:97
本文介绍了如何设置的Max&安培;敏时间车轮的DatePicker在Android中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序正在试图的DatePicker 设置date.I要设置日期选择器最大日期根据系统date.i是今天的日期不知道如何设置日期选择器最大日期为今天date.May我知道什么是实现我目标的正确方法?也许这个问题太简单,但是余did't找到合适solution.Please帮我出

下面是我的code:

 公共类UserDob延伸活动{    TextView的tvDisplayDate;
     DatePicker的datePickerBirthday;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_user_dob);        动作条AB = getActionBar();
        ab.setDisplayUseLogoEnabled(假);
        ab.setDisplayShowHomeEnabled(真);
        ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
        ab.setCustomView(R.layout.actionbar);
        ab.setDisplayHomeAsUpEnabled(真);
        ColorDrawable colorDrawable =新ColorDrawable(Color.parseColor(#FFFFFF));
        ab.setBackgroundDrawable(colorDrawable);        datePickerBirthday =(的DatePicker)findViewById(R.id.d presult);
        tvDisplayDate =(的TextView)findViewById(R.id.textViewUserDate);         INT currentapiVersion = android.os.Build.VERSION.SDK_INT;
            如果(currentapiVersion> = 11){
                datePickerBirthday.setCalendarViewShown(假);
            }            SimpleDateFormat的sdfDateTime =新的SimpleDateFormat(YYYY-MM-DD,Locale.US);
            字符串dateStr = sdfDateTime.format(新的Date(System.currentTimeMillis的()));            串[] dateSplit = dateStr.split( - );
            INT currentYear =的Integer.parseInt(dateSplit [0]);
            INT currentMonth =的Integer.parseInt(dateSplit [1]);
            INT CURRENTDAY =的Integer.parseInt(dateSplit [2]);            //显示一周的日期和在TextView中
            setHumanReadableDate(currentYear,currentMonth,CURRENTDAY);            //初始化日期选择器监听器
            // currentMonth - 1,因为在选择器,0是一月
            datePickerBirthday.init(currentYear,currentMonth - 1,CURRENTDAY,birthdayListener);
    }
     //日期选择器监听器
   OnDateChangedListener birthdayListener =新OnDateChangedListener(){       @覆盖
       公共无效onDateChanged(DatePicker的birthDayDatePicker,
               INT NEWYEAR,诠释newMonth,诠释newDay){           尝试{               // currentMonth + 1,获取适当的一个月
               setHumanReadableDate(NEWYEAR,newMonth + 1,newDay);           }赶上(NullPointerException异常五){
               e.printStackTrace();
           }赶上(例外五){
               e.printStackTrace();
           }
       }
   };   //显示用户更好的日期格式
   公共无效setHumanReadableDate(INT NEWYEAR,诠释newMonth,诠释newDay){
       尝试{           串clickedDate = NEWYEAR + - + newMonth + - + newDay;
           SimpleDateFormat的SDF =新的SimpleDateFormat(YYYY-MM-DD);
           日期D = NULL;
            尝试{
                D = sdf.parse(clickedDate);
            }赶上(java.text.ParseException E){
                // TODO自动生成catch块
                e.printStackTrace();
            }           SimpleDateFormat的sdfDateTime =新的SimpleDateFormat(MMMM DD,YYYY是EEEE,Locale.US);
           字符串dateStr = sdfDateTime.format(D);           tvDisplayDate.setText(dateStr);       }赶上(ParseException的E){
           e.printStackTrace();
       }
   }
}


解决方案

以上11 API
对于分钟日期可以使用

 的android:MINDATE =MM / DD / YYYY
或setMinDate(时间长)

有关最大日期

 的android:MAXDATE =MM / DD / YYYY//在XML
setMaxDate(新的Date()的getTime()); //当前时间

In my application am trying DatePicker to set date.I want to set date picker Maximum date is as today date according to system date.i don't know how to set date picker maximum date as today date.May I know what is the correct way to achieve my objective?Maybe this question too basic, but i did't find any suitable solution.Please Help me out

Here is my code :

    public class UserDob extends Activity {

    TextView tvDisplayDate;
     DatePicker datePickerBirthday;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_dob);

        ActionBar ab = getActionBar(); 
        ab.setDisplayUseLogoEnabled(false);
        ab.setDisplayShowHomeEnabled(true);
        ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
        ab.setCustomView(R.layout.actionbar);
        ab.setDisplayHomeAsUpEnabled(true);
        ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#FFFFFF"));     
        ab.setBackgroundDrawable(colorDrawable);

        datePickerBirthday=(DatePicker)findViewById(R.id.dpResult);
        tvDisplayDate = (TextView)findViewById(R.id.textViewUserDate);

         int currentapiVersion = android.os.Build.VERSION.SDK_INT;
            if (currentapiVersion >= 11) {
                datePickerBirthday.setCalendarViewShown(false);
            }

            SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
            String dateStr = sdfDateTime.format(new Date(System.currentTimeMillis()));

            String[] dateSplit = dateStr.split("-");
            int currentYear = Integer.parseInt(dateSplit[0]);
            int currentMonth = Integer.parseInt(dateSplit[1]);
            int currentDay = Integer.parseInt(dateSplit[2]);

            // to show date and day of week in the TextView
            setHumanReadableDate(currentYear, currentMonth, currentDay);

            // initialize date picker listener
            // currentMonth - 1, because on the picker, 0 is January
            datePickerBirthday.init(currentYear, currentMonth - 1, currentDay, birthdayListener);


    }
     // the date picker listener
   OnDateChangedListener birthdayListener = new OnDateChangedListener() {

       @Override
       public void onDateChanged(DatePicker birthDayDatePicker,
               int newYear, int newMonth, int newDay) {

           try{

               // currentMonth + 1, to retrieve proper month
               setHumanReadableDate(newYear, newMonth + 1, newDay);

           } catch (NullPointerException e) {
               e.printStackTrace();
           } catch (Exception e) {
               e.printStackTrace();
           }
       }
   };

   // show the user a better date format
   public void setHumanReadableDate(int newYear, int newMonth, int newDay){
       try {

           String clickedDate = newYear + "-" + newMonth + "-" + newDay;
           SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
           Date d = null;
            try {
                d = sdf.parse(clickedDate);
            } catch (java.text.ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

           SimpleDateFormat sdfDateTime = new SimpleDateFormat("MMMM dd, yyyy 'is' EEEE", Locale.US);
           String dateStr = sdfDateTime.format(d);

           tvDisplayDate.setText(dateStr);

       } catch (ParseException e) {
           e.printStackTrace();
       }
   }
}

解决方案

Above API 11 For min date you can use

android:minDate="mm/dd/yyyy"
or setMinDate(long time)

For Max date

android:maxDate="mm/dd/yyyy" // In XML
setMaxDate(new Date().getTime());// Current time

这篇关于如何设置的Max&安培;敏时间车轮的DatePicker在Android中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆