我工作的DatePicker和TimePicker的机器人。我越来越开始时间和和时间服务器。我可以以编程方式使用设定的最大日期和最小日期this链接
我想设定分钟时间(07:00)和最大时间(10:00)在timepicker并保持30分钟的间隔。我尝试使用此链接
我需要的是设置timepicket与分07:00,最大时间为10:00和间隔时间 07:00,07:30,08:00等
下面是code一样`
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
TimePicker PN =(TimePicker)findViewById(R.id.tp_powernap);
pn.setCurrentHour(7);
pn.setCurrentMinute(0);
的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(假);
}
私人TimePicker.OnTimeChangedListener StartTimeChangedListener =
新TimePicker.OnTimeChangedListener(){
公共无效onTimeChanged(TimePicker观点,诠释hourOfDay,INT分钟){
updateDisplay(查看,hourOfDay,分钟);
}
};
私人TimePicker.OnTimeChangedListener NullTimeChangedListener =
新TimePicker.OnTimeChangedListener(){
公共无效onTimeChanged(TimePicker观点,诠释hourOfDay,INT分钟){
}
};
私人无效updateDisplay(TimePicker timePicker,诠释hourOfDay,INT分钟){
INT nextMinute = 0;
timePicker.setOnTimeChangedListener(NullTimeChangedListener);
如果(分钟> = 45&安培;&安培;分钟< = 59)
nextMinute = 45;
否则,如果(分钟> = 30)
nextMinute = 30;
否则,如果(分钟> = 15)
nextMinute = 15;
否则如果(分钟大于0)
nextMinute = 0;
其他 {
nextMinute = 45;
}
如果(分钟 - nextMinute == 1){
如果(分钟> = 45&安培;&安培;分钟< = 59)
nextMinute = 00;
否则,如果(分钟> = 30)
nextMinute = 45;
否则,如果(分钟> = 15)
nextMinute = 30;
否则如果(分钟大于0)
nextMinute = 15;
其他 {
nextMinute = 15;
}
}
timePicker.setCurrentMinute(nextMinute);
timePicker.setOnTimeChangedListener(StartTimeChangedListener);
}
解决方案
仅供参考(这是一个老问题)。间隔可以使用以下劈实施:
类<> classForid =的Class.forName(com.android.internal.R的$ id);
场场= classForid.getField(分);
NumberPicker mMinuteSpinner =(NumberPicker)timePicker
.findViewById(field.getInt(空));
mMinuteSpinner.setMinValue(0);
mMinuteSpinner.setMaxValue((60 / TIME_PICKER_INTERVAL) - 1);
名单<字符串> displayedValues =新的ArrayList<字符串>();
的for(int i = 0; I< 60,I + = TIME_PICKER_INTERVAL){
displayedValues.add(的String.Format(%02D,I));
}
mMinuteSpinner.setDisplayedValues(displayedValues
.toArray(新的String [0]));
又见这里
开始 - 和endTime可以以类似的方式设置,但有问题的AM / PM标志。如果不使用AM / PM,而是始终显示在24小时格式的问题解决时间; - )
如果(startHour = -1放大器;!&安培;!endHour = -1){
场场= classForid.getField(小时);
NumberPicker hourSpinner =(NumberPicker)timePicker
.findViewById(field.getInt(空));
hourSpinner.setMinValue(startHour);
hourSpinner.setMaxValue(endHour);
名单<字符串> displayedValues =新的ArrayList<字符串>();
如果(timePicker.is24HourView()){
对于(INT I = startHour; I< = endHour ++我){
displayedValues.add(的String.Format(%02D,I));
}
} 其他 {
对于(INT I = startHour; I< = 12; ++ I){
displayedValues.add(的String.Format(%D,i)段);
}
的for(int i = 1; I< = endHour%12; ++ I){
displayedValues.add(的String.Format(%D,i)段);
}
}
hourSpinner.setDisplayedValues(displayedValues
.toArray(新的String [0]));
}
I am working on DatePicker and TimePicker in android. I am getting start time and and time from server. I can set max date and min date programmatically using this link
I want to set min time (07:00 ) and max time (10:00) in timepicker and maintain an interval of 30 minutes. I tried using This Link
What i need is to set timepicket with min 07:00 and max time =10:00 and intervals 07:00,07:30, 08:00 etc.
Here is the code same `
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TimePicker pn = (TimePicker) findViewById(R.id.tp_powernap);
pn.setCurrentHour(7);
pn.setCurrentMinute(0);
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(false);
}
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) {
int nextMinute = 0;
timePicker.setOnTimeChangedListener(NullTimeChangedListener);
if (minute >= 45 && minute <= 59)
nextMinute = 45;
else if (minute >= 30)
nextMinute = 30;
else if (minute >= 15)
nextMinute = 15;
else if (minute > 0)
nextMinute = 0;
else {
nextMinute = 45;
}
if (minute - nextMinute == 1) {
if (minute >= 45 && minute <= 59)
nextMinute = 00;
else if(minute >= 30)
nextMinute = 45;
else if(minute >= 15)
nextMinute = 30;
else if(minute > 0)
nextMinute = 15;
else {
nextMinute = 15;
}
}
timePicker.setCurrentMinute(nextMinute);
timePicker.setOnTimeChangedListener(StartTimeChangedListener);
}
解决方案
Just for reference (this is a old question). The interval can be implemented using the following hack:
Class<?> classForid = Class.forName("com.android.internal.R$id");
Field field = classForid.getField("minute");
NumberPicker mMinuteSpinner = (NumberPicker) timePicker
.findViewById(field.getInt(null));
mMinuteSpinner.setMinValue(0);
mMinuteSpinner.setMaxValue((60 / TIME_PICKER_INTERVAL) - 1);
List<String> displayedValues = new ArrayList<String>();
for (int i = 0; i < 60; i += TIME_PICKER_INTERVAL) {
displayedValues.add(String.format("%02d", i));
}
mMinuteSpinner.setDisplayedValues(displayedValues
.toArray(new String[0]));
see also here
Start- and Endtime can be set in similar manner but there are problems with the AM/PM Flag. If you don't use am/pm but instead always show the time in 24-hours format your problem is solved ;-)
if (startHour != -1 && endHour != -1) {
Field field = classForid.getField("hour");
NumberPicker hourSpinner = (NumberPicker) timePicker
.findViewById(field.getInt(null));
hourSpinner.setMinValue(startHour);
hourSpinner.setMaxValue(endHour);
List<String> displayedValues = new ArrayList<String>();
if (timePicker.is24HourView()) {
for (int i = startHour; i <= endHour; ++i) {
displayedValues.add(String.format("%02d", i));
}
} else {
for (int i = startHour; i <= 12; ++i) {
displayedValues.add(String.format("%d", i));
}
for (int i = 1; i <= endHour % 12; ++i) {
displayedValues.add(String.format("%d", i));
}
}
hourSpinner.setDisplayedValues(displayedValues
.toArray(new String[0]));
}