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

2022-08-31 22:38:05

我有一个搜索栏,并尝试在步骤1中将值从60设置为180,为第二个设置40到190。

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

            }       
        });

不起作用。任何想法如何解决它?


答案 1

不能设置 SeekBar 的值(始终为 0),也不能设置 SeekBar 的值(始终为 1)。minstep

要将值从 60 设置为 180,步长为 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);

        }
    }
);

我在代码中放置了另一个示例,以便您理解数学。


答案 2

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

    sb1.setMax(100);

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

但是您无法设置最小值,但是是的,您可以执行一些算术来调整值。使用算术调整应用程序所需的值。

例如,假设您希望在 SeekBar 上显示 -50 到 100 之间的数据值。将 SeekBar 的最大值设置为 150 (100-(-50)),然后从原始值中减去 50,以获得设置柱位置时应使用的数字。

您可以通过此链接获取更多信息。


推荐