这就是我的时间选择器现在的样子。我希望它只显示分钟和分钟只到最多30分钟。它工作得很好,但当你用键盘输入时间时,它会将时间设置为0,但我希望它设置为最大值。那么,如果用户输入50,它应该转到30,我该怎么做呢?我如何隐藏时间选择器的小时,因为这里不需要它。
protected void onCreate(Bundle savedInstanceState) {
System.out.println("Powernap");
super.onCreate(savedInstanceState);
setContentView(R.layout.powernap);
TimePicker pn = (TimePicker) findViewById(R.id.tp_powernap);
pn.setOnTimeChangedListener(StartTimeChangedListener);
pn.setIs24HourView(true);
}
private TimePicker.OnTimeChangedListener StartTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
updateDisplay(view, hourOfDay, minute);
}
};
private TimePicker.OnTimeChangedListener NullTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
}
};
private void updateDisplay(TimePicker timePicker, int hourOfDay, int minute) {
// do calculation of next time
int nextMinute = 0;
int nextHour = 0;
if (minute > 30){
System.out.println("Minute+30");
nextMinute = 30;
// set minute
timePicker.setCurrentMinute(nextMinute);
}
else {
System.out.println("minute 0");
nextMinute = 0;
}
if (hourOfDay != 0){
System.out.println("hour>0");
nextHour = 24;
}
// remove ontimechangedlistener to prevent stackoverflow/infinite loop
timePicker.setOnTimeChangedListener(NullTimeChangedListener);
// set minute
timePicker.setCurrentMinute(timePicker.getCurrentMinute()+nextMinute);
//set hour
timePicker.setCurrentHour(nextHour);
// hook up ontimechangedlistener again
timePicker.setOnTimeChangedListener(StartTimeChangedListener);
}发布于 2011-02-01 15:37:13
这就是我如何用最大和最小的步骤和5分钟的步骤来做这部分,有关于stackoverflow的示例,但在他们的方法中,你不能同时使用向上和向下按钮,在我的方法中它是有效的:
public class Powernap extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
System.out.println("Powernap");
super.onCreate(savedInstanceState);
setContentView(R.layout.powernap);
TimePicker pn = (TimePicker) findViewById(R.id.tp_powernap);
pn.setCurrentMinute(5);
System.out.println("timepicker erstellt");
pn.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
System.out.println("Tastatur geblockt");
pn.setOnTimeChangedListener(StartTimeChangedListener);
System.out.println("starttimechangedlistener");
pn.setIs24HourView(true);
}
private TimePicker.OnTimeChangedListener StartTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
updateDisplay(view, hourOfDay, minute);
}
};
private TimePicker.OnTimeChangedListener NullTimeChangedListener =
new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
}
};
private void updateDisplay(TimePicker timePicker, int hourOfDay, int minute) {
// do calculation of next time
int nextMinute = 0;
int nextHour = 0;
if (minute >= 30 && minute <= 59){
System.out.println("Minute+30");
nextMinute = 30;
}
else if(minute == 26){
System.out.println("Minute auf 30");
nextMinute = 30;
}
else if(minute == 25 || minute == 21 || minute == 29){
System.out.println("Minute auf 25");
nextMinute = 25;
}
else if(minute == 20 || minute == 16 || minute == 24){
System.out.println("Minute auf 20");
nextMinute = 20;
}
else if(minute == 15 || minute == 11 || minute == 19){
System.out.println("Minute auf 15");
nextMinute = 15;
}
else if(minute == 10 || minute == 6 || minute == 14){
System.out.println("Minute auf 10");
nextMinute = 10;
}
else if(minute == 5 || minute == 1 || minute == 9 || minute < 5){
System.out.println("Minute auf 5");
nextMinute = 5;
}
if (hourOfDay != 0){
System.out.println("hour>0");
nextHour = 24;
}
// remove ontimechangedlistener to prevent stackoverflow/infinite loop
timePicker.setOnTimeChangedListener(NullTimeChangedListener);
// set minute
timePicker.setCurrentMinute(nextMinute);
//set hour
timePicker.setCurrentHour(nextHour);
// hook up ontimechangedlistener again
timePicker.setOnTimeChangedListener(StartTimeChangedListener);
}发布于 2011-01-28 01:02:29
您需要编写自己的小部件。TimePicker小部件或TimePickerDialog不支持您想要的内容。
https://stackoverflow.com/questions/4757317
复制相似问题