web-dev-qa-db-ja.com

シークバーを制限する方法

SeekBarの上限と下限をそれぞれ50と20に設定したいと思います。

SeekBar は最大値を提供する直接オプションtopを持っていますが、最小値を0ではなく20に設定する方法は?

34
iscavengers

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

最小の進捗状況を見ると、私が望む最小値と合計することができます-あなたのケースでは20。

77
Paresh Mayani

最大値を30に設定し、SeekBarから読み取る値に20を追加します。

24
Romain Guy

これを行う最も簡単な方法は、SeekBarSeekBar.OnSeekBarChangeListener()で制限することです。

最初に、最小値またはデフォルト値でフィールドを作成する必要があります。次に、SeekBarを作成するときにこの値を設定します。

_private int fillDefault;
_

FragmentonCreateView()またはonCreateActivity

_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

6
Oleksandr Nos

例えば;

 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) {}
    });
0

私はここでこの質問に答えました: シークバーの最小値と最大値を設定する方法

簡単な計算で、最小値、最大値、さらにはシークバーのステップを設定できます。

お役に立てれば !

0
WannaGetHigh