TimePicker仅分钟和setmaximum分钟,如果用户输入的时间与键盘 [英] TimePicker only show minutes and setmaximum minutes if the user enter a time with the keyboard

查看:278
本文介绍了TimePicker仅分钟和setmaximum分钟,如果用户输入的时间与键盘的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的timepicker期待的时刻。 我希望它只是显示分钟,分钟只有最多30个。 它工作正常,但是当u进入时间用键盘它设置的时间为0,但我想它去到最大。 如果用户输入50,就应该到30,我怎么能做到这一点? 我怎么能隐藏timepicker的小时的原因,而是这里没有必要的。

 保护无效的onCreate(包savedInstanceState){
    的System.out.println(的PowerNapTM);
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.powernap);
    TimePicker PN =(TimePicker)findViewById(R.id.tp_powernap);

    pn.setOnTimeChangedListener(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;
        INT nextHour = 0;
        如果(分钟→30){
            的System.out.println(分+ 30);
            nextMinute = 30;
            //设定分钟
            timePicker.setCurrentMinute(nextMinute);
        }
        其他 {
            的System.out.println(分0);
            nextMinute = 0;
        }
        如果(hourOfDay!= 0){
            的System.out.println(小时大于0);
            nextHour = 24;
        }

        //删除ontimechangedlistener至prevent计算器/无限循环
        timePicker.setOnTimeChangedListener(NullTimeChangedListener);

        //设定分钟
        timePicker.setCurrentMinute(timePicker.getCurrentMinute()+ nextMinute);

        //设置小时
        timePicker.setCurrentHour(nextHour);

        //挂钩ontimechangedlistener再次
        timePicker.setOnTimeChangedListener(StartTimeChangedListener);

    }
 

解决方案

这就是我做的最大,最小值以及5分钟步骤的一部分,也有对计算器的样本,但他们的方法你无法同时使用了和向下按钮,用我的方法,它的工作原理:

 公共类的PowerNapTM延伸活动{



/ **第一次创建活动时调用。 * /
@覆盖
保护无效的onCreate(包savedInstanceState){
    的System.out.println(的PowerNapTM);
    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(真正的);
}


    私人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;
        INT nextHour = 0;
        如果(分钟> = 30&安培;&安培;分钟< = 59){
            的System.out.println(分+ 30);
            nextMinute = 30;
        }
        否则,如果(分钟== 26){
            的System.out.println(分AUF 30);
            nextMinute = 30;
        }
        否则,如果(分钟== 25 ||分钟== 21 ||分钟== 29){
            的System.out.println(分AUF 25);
            nextMinute = 25;
        }
        否则,如果(分钟== 20 ||分钟== 16 ||分钟== 24){
            的System.out.println(分AUF 20);
            nextMinute = 20;
        }
        否则,如果(分钟== 15 ||分钟== 11 ||分钟== 19){
            的System.out.println(分AUF 15);
            nextMinute = 15;
        }
        否则,如果(分钟== 10 ||分钟== 6 ||分钟== 14){
            的System.out.println(分AUF 10);
            nextMinute = 10;
        }
        否则,如果(分钟== 5 ||分钟== 1 ||分钟== 9 ||分钟小于5){
            的System.out.println(分AUF 5);
            nextMinute = 5;
        }





        如果(hourOfDay!= 0){
            的System.out.println(小时大于0);
            nextHour = 24;
        }

        //删除ontimechangedlistener至prevent计算器/无限循环
        timePicker.setOnTimeChangedListener(NullTimeChangedListener);

        //设定分钟
        timePicker.setCurrentMinute(nextMinute);

        //设置小时
        timePicker.setCurrentHour(nextHour);

        //挂钩ontimechangedlistener再次
        timePicker.setOnTimeChangedListener(StartTimeChangedListener);

    }
 

This is how my timepicker looks at the moment. I want it to only display the minutes and the minutes only to maximum 30. It works fine but when u enter the time with the keyboard it sets the time to 0 but i want it to go to the maximum. so if a user enters 50 it should go to 30, how can i do this? and how can i hide the hour of the timepicker cause it's not needed here.

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);

    }

解决方案

that's how i did the part with the maximum and minimum and the 5mins steps, there are samples on stackoverflow but with their methods u can't use both the up and the down button, with my method it works:

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);

    }

这篇关于TimePicker仅分钟和setmaximum分钟,如果用户输入的时间与键盘的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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