2010-08-12 27 views
10

Tôi đã bị mắc kẹt trên một vấn đề DatePicker cho một số và tôi dường như không thể tìm thấy bất kỳ giải pháp.Custom DatePicker

Tôi hiện có một DatePickerDialog phù hợp với nhu cầu của tôi YET Tôi cũng cần có khả năng ẩn/tắt cả trường Ngày và Tháng (để chọn Tháng hoặc Năm), tôi không thể tìm thấy bất kỳ giải pháp ngoại trừ việc triển khai MonthPicker/yearPicker của riêng tôi. thực tế là tôi không thực sự biết bắt đầu từ đâu để viết một bộ chọn có cùng kiểu với kiểu mặc định.

Tôi sẽ rất vui nếu bất kỳ ai trong số các bạn có mã mẫu của ngày tùy chỉnh picjer hoặc bất kỳ Ý tưởng đơn giản nào khác để giải quyết vấn đề của tôi.

Thanks a lot

im lặng

+0

Hãy thử điều này, Bạn có thể bắt đầu từ đây, Nó có lựa chọn spinner bình thường và phức tạp xem pager swipe http://viswanathl.in/2014/02/custom-datepicker-in-android/ –

Trả lời

7

Ý tưởng của tôi đang sử dụng một phong tục ngày Picker for android. Trong Google Code, tôi tìm thấy một dự án mã nguồn mở được gọi là Android Wheel

Android wheel for date time picker

Sau khi mã nguồn thanh toán từ Google Code, bạn sẽ tìm thấy một số ví dụ để bạn có thể dễ dàng tùy chỉnh một năm chọn như bạn muốn.

+0

hi bạn có mã nguồn của bánh xe này? – Dimitri

+0

@Nikita Bạn có thể tìm thấy trong câu trả lời của tôi liên kết đến repo Google Code của mình. – anticafe

+0

bạn có thể cho tôi liên kết không? – Dimitri

1

Loại hacky của nó, nhưng nếu bạn nhìn vào bố cục cho DatePicker, bạn có thể thấy FrameLayout chứa 3 chế độ xem phụ. Vì vậy, tôi đã muốn ẩn trong năm và đã làm điều này.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ViewGroup group = (ViewGroup) findViewById(R.id.picker); 
    group = (ViewGroup) group.getChildAt(0); 
    Toast.makeText(this, String.format("%s children", group.getChildCount()), Toast.LENGTH_SHORT).show(); 
    try{ 
     group.getChildAt(2).setVisibility(View.GONE); 
      // 2 for year, 1 for day, 0 for month 
    }catch(Exception e){ 
     Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show(); 
    } 
} 

Điều này sẽ nhận được phần mở rộng của bộ chọn và sau đó ẩn con thứ 3 của năm đó là năm. Hi vọng điêu nay co ich!

+0

Cảm ơn ý tưởng. Mặc dù chỉ có năm có thể ẩn thành công nói chung, vì vị trí tháng và ngày phụ thuộc vào ngôn ngữ (tháng/ngày/năm cho Hoa Kỳ và ngày/tháng/năm cho Vương quốc Anh chẳng hạn). – ernazm

3

Có một số thay đổi trong tổ ong.

ViewGroup group = (ViewGroup) findViewById(R.id.picker); 
group = (ViewGroup) group.getChildAt(0); 
group = (ViewGroup) group.getChildAt(0); 
// 0:datepicker , 1:calendar 
Toast.makeText(this, String.format("%s children", group.getChildCount()), Toast.LENGTH_SHORT).show(); 
try{ 
    group.getChildAt(0).setVisibility(View.GONE); 
    // 0 for year, 1 for month, 2 for day 
}catch(Exception e){ 
Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show(); 
}