2010-09-16 42 views
8

Tôi đang cố triển khai một chức năng như đồng hồ đếm ngược phát báo động ở 0. Tôi muốn có thể đặt khoảng thời gian chờ trước khi bộ hẹn giờ tắt và tôi ' m tự hỏi liệu có một tiện ích hoặc phần tử giao diện người dùng cung cấp chức năng lựa chọn này không.bộ chọn giờ/phút cho đồng hồ đếm ngược android

Về cơ bản, Android có giống như bánh xoay lựa chọn của iPhone không? Hoặc là có một số loại timepicker cho phép lựa chọn một số tùy ý của giờ và phút? Tiện ích con timepicker trong Android có nhãn AM/PM không cần thiết.

Tôi có cần triển khai giao diện người dùng tùy chỉnh của riêng mình để đạt được điều này không?

Trả lời

1

Có, bạn có thể cùng nhau hack. Đó là một khả năng khác biệt rằng mã này sẽ có tuổi thọ ngắn mặc dù do những thay đổi trong API.

int foo = 7; 
Object o = findViewById(ids[i]); 
Class<? extends Object> c = o.getClass(); 
Method m = c.getMethod("setCurrent", int.class); 
m.invoke(o, foo); 

String[] displayedValues = new String[] { "$00", "$01", "$02", "$03", "$04", 
         "$05", "$06", "$07", "$08", "$09", "$10", "$11", 
         "$12", "$13", "$14", "$15", "$16", "$17", "$18", "$19", "$20", "$21", 
         "$22", "$23", "$24", "$25"}; 
Method m = c.getMethod("setRange", int.class, int.class, String[].class); 
M.invoke(o, 0, 25, displayedValues); 

Và sau đó thả một vài trong số này trong cách bố trí của bạn:

<com.android.internal.widget.NumberPicker 
android:id="@+id/picker1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" /> 

setCurrent bộ của các chỉ số của hộp thoại mà trong trường hợp của foo nghĩa là giá trị của "$ 07". setRange đặt giá trị để hiển thị trong bộ chọn.

Chúc may mắn.

+0

"nhà nước" là gì? – pengwang

+0

pengwang, tôi hy vọng rằng chỉnh sửa làm rõ mọi thứ. cho tôi biết nếu nó không. –

9

Bạn có thể sử dụng mặc định TimePickerDialog và ghi đè lên các phương pháp onTimeChanged để cập nhật tiêu đề mình:

public class DurationPickerDialog extends TimePickerDialog { 

    public DurationPickerDialog(Context context, int theme, 
     OnTimeSetListener callBack, int hour, int minute) { 
     super(context, theme, callBack, hour, minute, true); 
     updateTitle(hour, minute); 
    } 

    public DurationPickerDialog(Context context, OnTimeSetListener callBack, 
     int hour, int minute) { 
     super(context, callBack, hour, minute, true); 
     updateTitle(hour, minute); 
    } 

    @Override 
    public void onTimeChanged(TimePicker view, int hour, int minute) { 
     super.onTimeChanged(view, hour, minute); 
     updateTitle(hour, minute); 
    } 

    public void updateTitle(int hour, int minute) { 
     setTitle("Duration: " + hour + ":" + formatNumber(minute)); 
    } 

    private String formatNumber(int number) { 
     String result = ""; 
     if (number < 10) { 
      result += "0"; 
     } 
     result += number; 

     return result; 
    } 
} 
+1

Tôi đang sử dụng Samsung s3. Sau khi bấm vào nút thiết lập thời gian đã được thiết lập và bỏ qua hộp thoại nhưng không bao giờ hiển thị một lần nữa nhưng nếu tôi bấm vào nút hủy bỏ hộp thoại làm việc tốt. – Deepak

+0

Theo như tôi có thể nói điều này sẽ không cho phép cài đặt có thời lượng trên 24 giờ. –

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