web-dev-qa-db-fra.com

comment limiter seekbar

Je voudrais définir les limites maximales et minimales de SeekBar à 50 et 20 respectivement.

SeekBar a une option directe top fournit la valeur maximale, mais comment définir sa valeur minimale sur 20 plutôt que sur 0

32
iscavengers

Dans SeekBar vouscan set only max value. 

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

Et, Vous ne pouvez pas directement définir la valeur minimale à la barre de recherche.

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

Comme vous voyez le progrès min vous pouvez résumer avec le min que je voudrais - dans votre cas 20.

76
Paresh Mayani

Définissez la valeur maximale sur 30 et ajoutez 20 aux valeurs lues dans la barre SeekBar.

24
Romain Guy

Le moyen le plus simple de procéder consiste simplement à le limiter dans SeekBar.OnSeekBarChangeListener() pour votre SeekBar.

Tout d'abord, vous devez créer un champ avec une valeur minimale ou par défaut. Définissez ensuite cette valeur lors de la création de SeekBar:

private int fillDefault;

Dans onCreateView() d'un Fragment ou onCreate d'un Activity:

fillDefault = 20;
fillSeekBar.setProgress(fillDefault);

Deuxièmement, implémentez l'auditeur pour cela:

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

Ça marche. Simple et génial: D

6
Oleksandr Nos

Par exemple;

 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
Günay Gültekin

J'ai répondu à cette question ici: Comment définir seekbar min et max value .

En mathématiques simples, vous pouvez définir la valeur minimale, la valeur maximale et même le pas de votre barre de recherche.

J'espère que cela t'aides !

0
WannaGetHigh