37

我想将SeekBar的最大和最小限制分别设置为 50 和 20。

SeekBar有一个直接选项 top 提供最大值,但是如何将其最小值设置为 20 而不是 0?

4

6 回答 6

81

在 SeekBar 你can set only max value.

<SeekBar android:id="@+id/SeekBar01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="50"/>

而且,您不能直接将最小值设置为搜索栏。

 SeekBar mSeekbar = (SeekBar) findViewById(R.id.SeekBar01);

    mSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
    {
       public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
       {
            length_edit.setText(Integer.toString(progress + 20));
       }

      public void onStartTrackingTouch(SeekBar seekBar) {}

      public void onStopTrackingTouch(SeekBar seekBar) {}
    });

当您看到最小进度时,您可以用我想要的 min 求和 - 在您的情况下为 20。

于 2010-08-16T06:46:01.973 回答
25

将最大值设置为 30,并将从 SeekBar 读取的值加 20。

于 2010-08-16T06:17:29.113 回答
6

最简单的方法是将其限制在SeekBar.OnSeekBarChangeListener()for your SeekBar.

首先,您需要创建具有最小值或默认值的字段。然后在创建时设置此值SeekBar

private int fillDefault;

onCreateView()一个FragmentonCreate一个Activity

fillDefault = 20;
fillSeekBar.setProgress(fillDefault);

其次,为它实现监听器:

fillSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            // Notification that the progress level has changed.
            if (progress < fillDefault){
                seekBar.setProgress(fillDefault); // magic solution, ha
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // Notification that the user has started a touch gesture.
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // Notification that the user has finished a touch gesture.
        }
    });

有用。简单而真棒:D

于 2015-08-13T12:29:36.120 回答
0

例如;

 public static int LENGTH_MIN_VALUE = 20;
 public static int LENGTH_MAX_VALUE = 50;
 SeekBar seekBar = (SeekBar) findViewById(R.id.passwordSeekBar);
    seekBar.setMax(LENGTH_MAX_VALUE);
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            if(progress <= Constract.PASSWORD_LENGTH_MIN_VALUE){
                progress = Constract.PASSWORD_LENGTH_MIN_VALUE + progress;
            }

            String numberAsString = String.valueOf(progress);
            seekNumberView.setText(numberAsString);
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {}

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {}
    });
于 2016-01-18T11:29:54.247 回答
0

我在这里回答了这个问题:如何设置搜索栏最小值和最大值

通过简单的数学运算,您可以设置搜索栏的最小值、最大值甚至步长。

希望这可以帮助 !

于 2017-07-04T09:09:36.967 回答
-3

你可以试试这个:

seekBar.setMax(max_value-min_value);
于 2015-10-01T23:13:35.563 回答