限制SeekBar进度20

时间:2014-02-24 06:33:51

标签: android

我的SeekBar拇指必须在20到5000范围内移动。

我需要阻止拇指移动到20以下。当达到此数量时,会出现一个告诉用户“达到最小值”的Toast消息。

然而,当我滑动到最小值并强制滑动限制时,即向20的多次滑动,屏幕上会出现几个弹出窗口。如何限制在多个幻灯片上屏幕上只有一个弹出窗口朝向最小值或最大值。

这是我的.setOnSeekBarChanged监听器:

sbMensualite.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                progress = progress / 1;
                progress = progress * 1;

                if (progress<20){
                    progress=20;
                }

                else {}


                if (duree_int>=Constant.DUREE_MAX_VALUE){

                    Toast.message="durée maximum atteinte";
                    m.startActivity(new Intent(m, Toast.class));

                }else if (duree_int<=Constant.DUREE_MIN_VALUE){

                    Toast.message="durée minimum atteinte";
                    m.startActivity(new Intent(m, Toast.class));

                }else {

                    //set progress duree android
                    sbDDuree.setProgress(duree_int);

                    //set amount of month for duree
                    txDDure.setText(Util.doubleNoDp(duree));
                }


                //set mensualite amount
                txMensualite.setText(Util.decimalFormat(progress));

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }

        });

2 个答案:

答案 0 :(得分:1)

我需要阻止拇指移动到20以下。当达到此数量时,会出现一个告诉用户“达到最小值”的Toast消息。

首先。使滑块的范围为0-4980。每次你读取值+20。如果要以编程方式从变量add -20。

设置值

其次,你真的不应该表示吐司来告诉达到最小值,因为,使用前一段中描述的方法,这将是显而易见的。

编辑:
是否会限制duree_int变量为你工作???

   if (duree_int>Constant.DUREE_MAX_VALUE){
        duree_int = Constant.DUREE_MAX_VALUE;
        Toast.message="durée maximum atteinte";
        m.startActivity(new Intent(m, Toast.class));

    }else if (duree_int<Constant.DUREE_MIN_VALUE){
        duree_int = Constant.DUREE_MIN_VALUE;
        Toast.message="durée minimum atteinte";
        m.startActivity(new Intent(m, Toast.class));

    }else {

答案 1 :(得分:0)

要取消现有的吐司并在之后显示新的吐司,请尝试以下操作:

Toast myToast = new Toast(getApplicationContext());

sbMensualite.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                progress = progress / 1;
                progress = progress * 1;

                if (progress<20){
                    progress=20;
                }

                if (duree_int>=Constant.DUREE_MAX_VALUE){
                    myToast.cancel();   //hide existing toast
                    myToast.setText("durée maximum atteinte");
                    myToast.setDuration(Toast.LENGHT_SHORT);
                    myToast.show();

                }else if (duree_int<=Constant.DUREE_MIN_VALUE){
                    myToast.cancel();   //hide existing toast
                    myToast.setText("durée minimum atteinte");
                    myToast.setDuration(Toast.LENGHT_SHORT);
                    myToast.show();

                }else {

                    //set progress duree android
                    sbDDuree.setProgress(duree_int);

                    //set amount of month for duree
                    txDDure.setText(Util.doubleNoDp(duree));
                }


                //set mensualite amount
                txMensualite.setText(Util.decimalFormat(progress));

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }

        });