2015-05-30 92 views
-4

我想修復datePickerDialog中的月份和年份,但希望用戶自己選擇日期。可能嗎? 例如:DatePickerDialog將固定用的五月和2015年,用戶現在只能更改1之間的日期31Android DatePickerDialog更改日期

+0

請參閱此鏈接http://stackoverflow.com/questions/21321789/android-datepicker-change-to-only-month-and-year –

+0

@Priya請找到我的下面的解決方案 –

+0

如果你只是不能回答它的哦,但你爲什麼低調的闕這是一個有效的問題,根據我的項目需要。 – Anupriya

回答

0

您可以使用下面的代碼行

public class First extends Activity { 
DatePicker _date; 
Date date_current; 
Date date_future; 
int days_count=0; 

@TargetApi(Build.VERSION_CODES.HONEYCOMB) 
@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.first); 
    Calendar ci = Calendar.getInstance(); 
    String CiDateTime = ci.get(Calendar.YEAR) + "-" + 
      (ci.get(Calendar.MONTH) + 1) + "-" + 
      ci.get(Calendar.DAY_OF_MONTH); 

    SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy"); 


    try { 
     date_current = f.parse(CiDateTime); 
     long milliseconds = date_current.getTime(); 
     _date.setMinDate(milliseconds);//here is _date is DatePicker Object 

     int monthMaxDays = ci.getActualMaximum(Calendar.DAY_OF_MONTH); 
     if(monthMaxDays>ci.get(Calendar.DAY_OF_MONTH)) 
     { 
      days_count = monthMaxDays-ci.get(Calendar.DAY_OF_MONTH); 
      String CiDateMax = ci.get(Calendar.YEAR) + "-" + 
        (ci.get(Calendar.MONTH) + 1) + "-" + 
        ci.get(Calendar.DAY_OF_MONTH)+days_count; 
      date_future = f.parse(CiDateMax); 
      long milliseconds_MAx = date_future.getTime(); 
      _date.setMaxDate(milliseconds_MAx); 
     } 
     else 
     { 
      _date.setMaxDate(milliseconds); 
     } 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 
} 
+0

@ priya..Is對你是可行的..如果有任何疑慮比PLZ讓我知道 –

+0

使用UR代碼今天的日期將設置爲mindate,但我希望用戶自己設置日期,而月和年是固定的。 – Anupriya

+0

好的..我會得到答案...比我會盡快更新 –

0

你可以得到底層的DatePicker從DatePickerDialog(通過簡單地調用getDatePicker()),並使用設置在其邊界:

+0

@Priya如果你想更多的解釋與示例比讓我知道。 –

1

我解決了我以下列方式問題:

Calendar cal = Calendar.getInstance(); 
        DatePickerDialog dialog = new DatePickerDialog(this, myDateSetListener, year, month, 
          day); 
        cal.set(Calendar.MONTH, userMonthValue); 

        cal.set(Calendar.YEAR, userYearValue); 

        cal.set(Calendar.DAY_OF_MONTH, 1); 
        dialog.getDatePicker().setMinDate(cal.getTimeInMillis() - 1000); 

        // code to set max date 
        cal = Calendar.getInstance(); 

        cal.set(Calendar.MONTH, userMonthValue); 

        cal.set(Calendar.YEAR, userYearValue); 
        cal.set(Calendar.DAY_OF_MONTH, cal.getMaximum(Calendar.DAY_OF_MONTH)); 
        dialog.getDatePicker().setMaxDate(cal.getTimeInMillis() - 1000); 

現在我的日期選擇器對話框是固定的月和年,,,和用戶只能更改1之間的日期和30或31

+0

謝謝...對我有幫助 –