2010-05-10 29 views
5

Tôi muốn hiển thị một DatePicker nơi trường năm sẽ hiển thị hoặc không, theo một hộp kiểm.Hiển thị một DatePicker có hoặc không có trường năm

Nhưng tôi không tìm thấy bất cứ điều gì cho tôi một cách để thực hiện nó.

Bạn có ý tưởng nào không?

Xin cảm ơn trước.

+0

theo như tôi biết điều đó không thể ít nhất trong SDK Android 1.5 – Jorgesys

+0

Tôi nghĩ bạn sẽ lãng phí les s thời gian bằng cách mã hóa một DatePicker mình phù hợp với tất cả các nhu cầu của bạn. – Cristian

+0

Đó là một yêu cầu khá khó khăn vì ngày tháng có thể thay đổi tùy theo năm ... Lời khuyên để xem xét viết phiên bản của riêng bạn (ít nhất là cho phiên bản không thể nhìn thấy) có lẽ là tốt. – Adrian

Trả lời

1

Vì không thể xóa trường năm từ DatePicker, cuối cùng tôi quyết định thêm CheckBox "bỏ qua trường năm" để triển khai giải pháp.

-1

Tôi nghĩ rằng Any+Time™ DatePicker/TimePicker AJAX Calendar Widget có thể phù hợp với bạn. Nó có khả năng chọn những lĩnh vực để sử dụng và một người bạn nói với tôi nó hoạt động tốt trên điện thoại Android của mình. Chỉ cần kiểm tra xem hộp kiểm có được chọn hay không và sau đó tạo bộ chọn với chuỗi định dạng có hoặc không, chứa một trình chỉ định năm, theo đó.

+0

Cảm ơn nhưng tôi không muốn kết hợp mã của tôi với javascript, tôi nghĩ rằng nó sẽ phức tạp quá nhiều ứng dụng của tôi. – tbruyelle

2

Hãy xem DateSlider, một thay thế tuyệt vời, có thể tùy chỉnh cho DatePicker.

+0

Đã sửa lỗi .......... –

+0

Đã sửa lỗi ......... +1 – JoxTraex

2

thiết lập kiểm tra hộp nghe như nhu cầu của bạn để xem các hộp kiểm

if(id == R.id.event_checkBox_year) 
    { 
     if(ch.isChecked()) 
     { 
      visiblity = View.GONE; 
     } 
     else 
     { 
      visiblity = View.VISIBLE; 
     } 
     showHideYear(visiblity); 
    } 

private void showHideYear(int visiblity) 
{ 
    try { 
      Field f[] = date.getClass().getDeclaredFields(); 
      for (Field field : f) { 
       if (field.getName().equals("mYearSpinner") ||field.getName().equals("mYearPicker")) 
       { 
        field.setAccessible(true); 
        Object yearPicker = new Object(); 
        yearPicker = field.get(date); 
        ((View) yearPicker).setVisibility(visiblity); 
       } 
      } 
     } catch (SecurityException e) 
     { 
      Log.d("ERROR", e.getMessage()); 
     } 
     catch (IllegalArgumentException e) 
     { 
      Log.d("ERROR", e.getMessage()); 
     } catch (IllegalAccessException e) 
     { 
      Log.d("ERROR", e.getMessage()); 
     } 
} 
0

Đây là giải pháp cho không hiển thị năm spinner hoặc chọn năm trên bảng chọn ngày thoại

try { 

     Field f[] = datePickerDialog.getClass().getDeclaredFields(); 
     for (Field field : f) { 
      if (field.getName().equals("mDatePicker")) { 
       field.setAccessible(true); 
       Object datePicker=new Object(); 
       datePicker=field.get(datePickerDialog); 
       Field[] fields=datePicker.getClass().getDeclaredFields(); 
       for(Field field1:fields){ 
        if(field1.getName().equals("mYearSpinner") || field1.getName().equals("mYearPicker")){ 
         field1.setAccessible(true); 
         Object ye=field1.get(datePicker); 
         ((View)ye).setVisibility(View.GONE); 
        } 
       } 
      } 
     } 
    } 
    catch (SecurityException e) { 
     Log.d("ERROR", e.getMessage()); 
    } 
    catch (IllegalArgumentException e) { 
     Log.d("ERROR", e.getMessage()); 
    } 
    catch (IllegalAccessException e) { 
     Log.d("ERROR", e.getMessage()); 
    } 
0

Một lót:

getDatePicker().findViewById(Resources.getSystem().getIdentifier("year", "id", "android")).setVisibility(View.GONE); 
Các vấn đề liên quan