2012-02-07 20 views
6

Cách giới hạn ngày DatePicker không thể chọn ngày trong tương lai. Tôi có DatePicker trong hoạt động được sử dụng để đăng ký. Phải làm gì để người dùng không thể chọn ngày sinh nhật nếu người dùng có ít hơn 18 năm đó (ví dụ: không thể chọn ngày sau ngày hôm nay - 18 năm)?Cách giới hạn người dùng trên DatePicker để chỉ có thể chọn ngày trước ngày today_date - 18 năm

+0

chuyển đổi ngày cài đặt theo millis và kiểm tra ngày hiện tại theo millis. tính khoảng cách giữa hai millis. –

Trả lời

2

Bạn không đề cập đến cấp API nào. Trên Honeycomb và sau này, DatePicker có các phương thức setMin/MaxDate mà bạn có thể sử dụng để hạn chế phạm vi cho phép.

2

Tôi hy vọng bạn có câu trả lời cho đến bây giờ. Sau đây cũng có thể hữu ích cho người khác: Nếu bạn muốn vô hiệu hóa người dùng để chọn ngày 18 năm sau ngày hôm nay, đây là những gì bạn có thể làm.

Nhận thời gian từ 1-JAN-1970-18 năm kể từ bây giờ (chỉ trong vài giây milli)

Calendar cal = Calendar.getInstance(); 
    cal.set(cal.get(Calendar.YEAR)+18,cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH), 
      cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), 0); 
    long time = cal.getTimeInMillis(); 

bộ nó như max ngày phép trong datepicker

datepicker2.setMaxDate(time); 

Hy vọng nó sẽ giúp bất cứ ai khác tìm kiếm câu trả lời

0

Đếm năm trước 18 kể từ bây giờ (năm hiện tại) bởi int minYear = currentYear - 18; Và sau đó đặt ngày đó với (Min năm, tháng hiện tại, ngày hiện tại) làm giới hạn tối đa của bộ chọn ngày.

private static void setMaxLimitInDatePicker(DatePickerDialog datePickerDialog) { 
    final Calendar calendar = Calendar.getInstance(); 

    int currentYear = calendar.get(Calendar.YEAR); 
    int currentMonth = calendar.get(Calendar.MONTH); 
    int currentDay = calendar.get(Calendar.DAY_OF_MONTH); 

    int minYear = currentYear - 18; 
    int minMonth = currentMonth; 
    int minDay = currentDay; 

    calendar.set(minYear, minMonth, minDay); 
    long minDateInMilliSeconds = calendar.getTimeInMillis(); 

    // Set 18 years from today as max limit of date picker 
    datePickerDialog.getDatePicker().setMaxDate(minDateInMilliSeconds); 
} 
+0

hãy xem xét giải thích câu trả lời của bạn. Các câu trả lời chỉ có mã không được khuyến khích. – ADyson

Các vấn đề liên quan