2010-03-26 17 views
11

मैं उपयोगकर्ता चयनित तिथियों के आधार पर छवियों को प्रदर्शित करने के लिए एंड्रॉइड में डेटपीकर का उपयोग कर रहा हूं। उदाहरण के लिए जनवरी 1, 2010 से 31 दिसंबर 2010 तक कुछ दिनों के लिए मुझे तारीखों को सीमित करने की आवश्यकता है। मैंने सोचा कि सरल लेकिन इन तारीखों को सीमित करने के तरीके पर मुझे कोई जवाब नहीं मिल सकता है।सेट एंड्रॉइड डेटपिकर दिनांक सीमा

किसी को भी एंड्रॉयड DatePicker

के लिए तारीखों को सीमित करने के लिए कैसे
+1

मैं प्रोग्राम के न्यूनतम, अधिकतम चयन तिथियाँ निर्धारित, और भी DatePicker दृश्य के लिए वर्तमान (डिफ़ॉल्ट) तिथि निर्धारित करने में कामयाब रहे एक सरल रेखा टाइप करके इस लक्ष्य को हासिल कर सकते हैं: http://stackoverflow.com/ प्रश्न/6421874/डेट-टू-डेट-द-डेट-इन-द-डेटपिकर-विजेट-इन-एंड्रॉइड/7961268 # 7961268 –

उत्तर

0

मैं आप अपने खुद के DatePicker लागू करना लगता है कि पता है। इसके पीछे तर्क यह होगा: "केवल कुछ डेवलपर्स DatePicker को सीमित करेंगे, इसलिए उन्हें स्वयं कार्यक्षमता को कार्यान्वित करना होगा।"

+1

इसके अलावा एक्सएमएल के लिए कुछ अतिरिक्त गुण उपलब्ध हैं जैसे कि प्रिय साल की शुरुआत, आप इसका उपयोग कर सकते हैं सीमा। – Pentium10

+0

मुझे अंत में जानकारी कहां मिल जाएगी प्रिय साल की शुरुआत, ऐसा लगता है कि यह बहुत अच्छी तरह से काम करेगा। मैं अपने स्वयं के लागू होने वाले उत्तर से डरता था, उम्मीद है कि यह एक्सएमएल गुणों को खत्म कर दिया जाएगा। – matt

+0

अंत वर्ष और शुरू करें सीमाएं केवल विजेट के साथ काम करती हैं, वास्तविक दिनांक पिकर संवाद का उपयोग नहीं कर रहा हूं। मैं यह देखने के लिए देखता हूं कि इसके बजाय विजेट को कैसे कार्यान्वित किया जाए, जब तक कि कोई भी – matt

1

उत्तर देने में बहुत देर हो सकती है, लेकिन min और maxDatePickerDialog के लिए दिनांक सेट करना आसान है। सभी एंड्रॉइड संस्करणों के लिए काम करता है। सीधे शब्दों में आप वापस जाने के लिए की जरूरत है DatePickerDialog Android संस्करण

protected Dialog onCreateDialog(int id) 
{ 
    switch (id) 
    { 
     case DATE_DIALOG_ID: 
      DatePickerDialog dialog = null; 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) 
      { 
       dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() 
       { 
        @Override 
        public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate) 
        { 
         mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear); 
        } 
       }, year, month - 1, date); 
       Calendar currentDate = Calendar.getInstance(); 
       dialog.getDatePicker().setMaxDate(currentDate.getTimeInMillis()); 
       //If you need you can set min date too 
      } 
      else 
      { 
       dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() 
       { 
        @Override 
        public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDate) 
        { 
         mTextView.setText(selectedDate + "/" + selectedMonth + 1 + "/" + selectedYear); 
        } 
       }, year, month - 1, date) 
       { 
        @Override 
        public void onDateChanged(DatePicker view, int year, int month, int day) 
        { 
         if (year <= maxYear && month + 1 <= maxMonth && date <= maxDate) //meets your criteria 
         { 
          view.updateDate(year, month, date); //update the date picker to selected date 
         } 
         else 
         { 
          view.updateDate(maxYear, maxMonth - 1, maxDate); // or you update the date picker to previously selected date 
         } 
        } 
       }; 
      } 
      return dialog; 
    } 
    return null; 
} 
0

तुम क्यों customoption साथ DatePicker की तरह नए लेआउट तैयार नहीं करने चाहिए पर आधारित है। आप स्पिनरों और फोरलोप्स के साथ कर सकते हैं।

7

तुम सिर्फ सेट कर सकते हैं:

dateDialog.getDatePicker().setMaxDate(new Date().getTime()); 

और

dateDialog.getDatePicker().setMinDate(new Date().getTime()); 

जहां dateDialog एक

new DatePickerDialog() 

और परम MaxDate के लिए सेट करने के लिए प्रकार है और MinDate एक long

है
+0

पर सीमाओं को लागू करने के तरीके के बारे में जानकारी प्रदान नहीं कर सकता है, केवल एपीआई 11 के लिए एंड्रॉइड 11. –

+0

के बाद संस्करणों के साथ काम करता है। इस http://stackoverflow.com को आजमाएं/एक/32943731/3758898 –

0

यू

mDatePicker.getDatePicker().setMinDate(System.currentTimeMillis()); 
     mcurrentDate.add(Calendar.MONTH,6); 
     mDatePicker.getDatePicker().setMaxDate(mcurrentDate.getTimeInMillis()); 
संबंधित मुद्दे