2010-09-16 158 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