Android - Минуты TimePicker к 15

Я могу управлять представлением Android TimePicker, чтобы просто показать минуты интервалу 15 минут?

Значение, если это - 12:28 теперь, показывает 12:30 и нажатие + и - кнопка увеличит и постепенно уменьшится 15?

Спасибо,

Мишень

38
задан teepusink 5 April 2010 в 18:28
поделиться

3 ответа

Вы должны написать свой собственный TimePicker. Не уверен, что вы можете расширить существующий TimePicker и самостоятельно обрабатывать события кнопок.

3
ответ дан 27 November 2019 в 03:44
поделиться

Думаю, я понял это. Может быть, из гетто, но ...

Вот что я сделал.

start_time.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {

            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                updateDisplay(hourOfDay, minute);
            }
        });

private void updateDisplay(int hourOfDay, int minute) {
                // do calculation of next time
                // nextTime = calculation of next time;

                // the processed boolean is to prevent infinite loop
        if (!processed) {
            start_time.setCurrentMinute(nextTime);  
                        processed = true;
        } else {
                        processed = false;
                }
    }
3
ответ дан 27 November 2019 в 03:44
поделиться

У меня сработало следующее.

Сначала в onCreate:

pickStartTime = (TimePicker)findViewById(R.id.StartTime);
pickStartTime.setOnTimeChangedListener(mStartTimeChangedListener);

Установите OnTimeChangedListener:

private TimePicker.OnTimeChangedListener mStartTimeChangedListener =
    new TimePicker.OnTimeChangedListener() {

    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
        updateDisplay(view, startDate, hourOfDay, minute);          
    }
};

Null OnTimeChangedListener (объяснено в комментариях в updateDisplay ниже):

private TimePicker.OnTimeChangedListener mNullTimeChangedListener =
    new TimePicker.OnTimeChangedListener() {

    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {

    }
};

private void updateDisplay(TimePicker timePicker, Date date, int hourOfDay, int minute) { 

    // do calculation of next time 
    int nextMinute = 0;     
    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;
    }

    // remove ontimechangedlistener to prevent stackoverflow/infinite loop
    timePicker.setOnTimeChangedListener(mNullTimeChangedListener);

    // set minute
    timePicker.setCurrentMinute(nextMinute);

    // hook up ontimechangedlistener again
    timePicker.setOnTimeChangedListener(mStartTimeChangedListener);

    // update the date variable for use elsewhere in code
    date.setMinutes(nextMinute);  
}
8
ответ дан 27 November 2019 в 03:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: