如何设置开始时间和结束时间为30分钟,在TimePicker机器人的间隔? [英] How to set start time and end time with an interval of 30 minutes in TimePicker Android?

查看:719
本文介绍了如何设置开始时间和结束时间为30分钟,在TimePicker机器人的间隔?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我工作的DatePicker和TimePicker的机器人。我越来越开始时间和和时间服务器。我可以以编程方式使用设定的最大日期和最小日期<一href="http://stackoverflow.com/questions/6421874/how-to-get-the-date-set-in-the-datepicker-widget-in-android/7961268#7961268">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);
    如果(分钟&GT; = 45&安培;&安培;分钟&LT; = 59)
        nextMinute = 45;
    否则,如果(分钟&GT; = 30)
        nextMinute = 30;
    否则,如果(分钟&GT; = 15)
        nextMinute = 15;
    否则如果(分钟大于0)
        nextMinute = 0;
    其他 {
        nextMinute = 45;
    }

    如果(分钟 -  nextMinute == 1){
        如果(分钟&GT; = 45&安培;&安培;分钟&LT; = 59)
            nextMinute = 00;
        否则,如果(分钟&GT; = 30)
            nextMinute = 45;
        否则,如果(分钟&GT; = 15)
            nextMinute = 30;
        否则如果(分钟大于0)
            nextMinute = 15;
        其他 {
            nextMinute = 15;
        }
    }

    timePicker.setCurrentMinute(nextMinute);

    timePicker.setOnTimeChangedListener(StartTimeChangedListener);

}
 

解决方案

仅供参考(这是一个老问题)。间隔可以使用以下劈实施:

 类&LT;&GT; 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);
名单&LT;字符串&GT; displayedValues​​ =新的ArrayList&LT;字符串&GT;();
的for(int i = 0; I&LT; 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);
            名单&LT;字符串&GT; displayedValues​​ =新的ArrayList&LT;字符串&GT;();
            如果(timePicker.is24HourView()){
                对于(INT I = startHour; I&LT; = endHour ++我){
                    displayedValues​​.add(的String.Format(%02D,I));
                }
            } 其他 {
                对于(INT I = startHour; I&LT; = 12; ++ I){
                    displayedValues​​.add(的String.Format(%D,i)段);
                }
                的for(int i = 1; I&LT; = 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]));
        }

这篇关于如何设置开始时间和结束时间为30分钟,在TimePicker机器人的间隔?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆