如何设置搜索栏最小值和最大值

Si8*_*Si8 35 java android seekbar

我有一个搜索栏,试图将值设置为60到180为1,而40到190为第二步为1.

sb1 = (SeekBar) findViewById(R.id.progresss);
        sb1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {       

            @Override       
            public void onStopTrackingTouch(SeekBar seekBar) {      
                // TODO Auto-generated method stub
                //int inVal = Integer.parseInt(String.valueOf(seekBar.getProgress()));
                //inVal =+ 70;
                //Toast.makeText(getApplicationContext(), String.valueOf(inVal),Toast.LENGTH_LONG).show();
            }       

            @Override       
            public void onStartTrackingTouch(SeekBar seekBar) {     
                // TODO Auto-generated method stub      
            }       

            @Override       
            public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {     
                // TODO Auto-generated method stub
                progress =+ 70;
                Toast.makeText(getApplicationContext(), String.valueOf(progress),Toast.LENGTH_LONG).show();

            }       
        });
Run Code Online (Sandbox Code Playgroud)

不管用.知道怎么解决吗?

Wan*_*igh 98

您不能设置minSeekBar 的值(始终为0),也不能设置stepSeekBar 的值(始终为1).

要将值设置为60180,步长为1:

int step = 1;
int max = 180;
int min = 60;

// Ex : 
// If you want values from 3 to 5 with a step of 0.1 (3, 3.1, 3.2, ..., 5)
// this means that you have 21 possible values in the seekbar.
// So the range of the seek bar will be [0 ; (5-3)/0.1 = 20].
seekbar.setMax( (max - min) / step );


seekbar.setOnSeekBarChangeListener(
    new OnSeekBarChangeListener()
    {
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {}

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {}

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, 
            boolean fromUser) 
        {
            // Ex :
            // And finally when you want to retrieve the value in the range you
            // wanted in the first place -> [3-5]
            //
            // if progress = 13 -> value = 3 + (13 * 0.1) = 4.3
            double value = min + (progress * step);

        }
    }
);
Run Code Online (Sandbox Code Playgroud)

我在代码中添加了另一个示例,以便您了解数学.

  • 这应该是公认的答案.方式更容易理解! (8认同)
  • 没有什么是太晚了,谢谢你发布你的解决方案.我现在明白了:) (3认同)

Kai*_*bhi 31

您可以使用以下代码为搜索栏设置最大值:

    sb1.setMax(100);
Run Code Online (Sandbox Code Playgroud)

这将设置搜索栏的最大值.

但是你不能设置最小值,但是你可以做一些算术来调整值.使用算术来调整应用程序所需的值.

例如,假设您希望在SeekBar上显示从-50到100的数据值.将SeekBar的最大值设置为150(100 - ( - 50)),然后将50添加到原始值以获取设置条位置时应使用的数字.

您可以通过此链接获得更多信息.


ish*_*shu 12

seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {

                int MIN = 5;
                if (progress < MIN) {

                    value.setText(" Time Interval (" + seektime + " sec)");
                } else {
                    seektime = progress;
                }
                value.setText(" Time Interval (" + seektime + " sec)");

            }
        });
Run Code Online (Sandbox Code Playgroud)


Pel*_*nes 10

为我设置最小值和最大值到搜索条的最简单方法:如果你想要值min = 60到max = 180,这等于min = 0 max = 120.所以在你的seekbar xml set属性中:

android:max="120"
Run Code Online (Sandbox Code Playgroud)

min将始终为0.

现在你只需要做你正在做的事情,添加金额以获得任何变化中的翻译值,在这种情况下为+60.

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            int translatedProgress = progress + 60;
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }
    });
Run Code Online (Sandbox Code Playgroud)

注意搜索栏属性android:progress,如果更改范围,则必须重新计算初始进度.如果你想要50%,max/2,在我的例子中120/2 = 60;