2010-09-16 159 views
8

我試圖實現類似於倒數計時器的播放鬧鐘爲0的事情。我希望能夠設置計時器熄滅前等待的時間量, m想知道是否有一個UI小部件或元素提供這種選擇功能。安卓倒計時計時器的小時/分鐘選擇器

基本上,android有沒有像iPhone的選擇旋鈕?或者是否有某種類型的時間選擇器允許選擇任意數量的小時和分鐘? android中的timepicker小部件有一個不必要的AM/PM標籤。

我是否需要實現自己的自定義UI才能實現這一目標?

回答

1

是的,你可以一起砍。儘管由於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); 

再落一對夫婦的這些在你的佈局:

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

的setCurrent集的這foo的情況下,意味着「$ 07」的值選擇器的索引。 setRange設置值以顯示在選取器中。

祝你好運。

+0

什麼是「國家」? – pengwang 2010-09-17 03:44:03

+0

鵬旺,我希望編輯澄清事情。讓我知道如果它不。 – 2010-09-23 14:08:12

9

您可以使用默認TimePickerDialog並覆蓋onTimeChanged方法來更新標題自己:

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

我正在使用三星s3。點擊設置按鈕後,時間設置和對話框關閉,但從不再顯示,但如果我點擊取消按鈕對話框工作正常。 – Deepak 2012-11-23 06:46:55

+0

據我所知,這將不允許持續24小時以上的設置。 – 2015-02-28 09:42:55