So legen Sie den Min- und Max-Wert der Suchleiste fest

Lesezeit: 6 Minuten

Ich habe eine Suchleiste und versuche in Schritt 1 den Wert von 60 bis 180 für einen und 40 bis 190 für den zweiten einzustellen.

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

            }       
        });

funktioniert nicht. Irgendeine Idee, wie man es beheben kann?

  • Überprüfen Dies

    – MysticMagicϡ

    24. Dez. ’13 um 13:45

  • Versuche dies

    – Chirag Shah

    24. Dez. ’13 um 13:51

  • Der Mindestwert ist immer 0. Er kann nicht geändert werden.

    – GareginSargsyan

    24. Dez. ’13 um 14:23

So legen Sie den Min und Max Wert der Suchleiste fest
Willst du kiffen

Sie können die nicht einstellen min Wert einer SeekBar (immer 0) und Sie können die step Wert einer SeekBar (immer 1).

Um den Wert von einzustellen 60 zu 180 mit einem Schritt von 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);

        }
    }
);

Ich habe ein weiteres Beispiel in den Code eingefügt, damit Sie die Mathematik verstehen.

  • Nichts ist jemals zu spät und danke für das Posten deiner Lösung. jetzt verstehe ich es besser 🙂

    – Si8

    4. August ’14 um 12:30 Uhr

  • Dies sollte die akzeptierte Antwort sein. Viel leichter zu verstehen!

    – Hrk

    18. März ’16 um 15:39

  • sehr schöne lösung

    – MohK

    9. Februar ’18 um 12:03

  • das ist die beste antwort

    – Michael Yang

    12. Okt ’18 um 9:13


  • Ich nenne es einen programmatischen Weg, um ein Problem zu lösen. Ausgezeichnete Lösung.

    – parthiban

    18. April ’20 um 20:53 Uhr

1641812956 912 So legen Sie den Min und Max Wert der Suchleiste fest
Kailash Dabhi

Sie können den maximalen Wert für Ihre Suchleiste mit diesem Code festlegen:

    sb1.setMax(100);

Dadurch wird der maximale Wert für Ihre Suchleiste festgelegt.

Sie können den Mindestwert jedoch nicht festlegen, aber Sie können den Wert arithmetisch anpassen. Verwenden Sie Arithmetik, um Ihren anwendungserforderlichen Wert anzupassen.

Angenommen, Sie haben Datenwerte von -50 bis 100, die Sie in der SeekBar anzeigen möchten. Stellen Sie das Maximum der SeekBar auf 150 (100-(-50)) ein und ziehen Sie dann 50 vom Rohwert ab, um die Zahl zu erhalten, die Sie beim Festlegen der Balkenposition verwenden sollten.

Mehr Infos bekommt ihr hier Verknüpfung.

  • perfekt. Das sollte oben stehen

    – GoodSp33d

    7. August ’15 um 6:04

  • Dies ist die beste Antwort auf diese Frage

    – tryp

    27. März ’18 um 10:01

  • Obwohl diese Antwort gilt für Max Wert, aber es beantwortet nicht die Frage, wie es heißt Min und Max also kein Upvote, bis eine umfassende Lösung bereitgestellt wird!

    – Blueware

    26. März ’19 um 10:49

  • Ab API Level 26 können Sie es so verwenden sb1.setMin(40)

    – Ahmed Maad

    9. Juni ’20 um 23:35

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

            }
        });

  • Danke. Ich ging mit einem NumberPicker mit vorausgefüllten Zahlen.

    – Si8

    25. Dezember ’13 um 16:38

  • Hey, warum sagt Android Studio, dass die Methoden die Methode ihrer Superklasse nicht überschreiben?

    – mavavilja

    10. Juni ’18 um 17:26

  • Ich möchte den Wert von -180 bis 180 in der Seekbar einstellen. Es funktioniert gut in Android über 5 Versionen des Android-Geräts, aber in darunter Es zeigt mir nicht den negativen Wert in der Suchleiste an.

    – Prinz Dholakiya

    9. Mai ’19 um 5:30

So legen Sie den Min und Max Wert der Suchleiste fest
Pelanes

Der einfachste Weg, einen Min- und Max-Wert für eine Suchleiste festzulegen: Wenn Sie Werte von min=60 bis max=180 wünschen, ist dies gleich min=0 max=120. Also in Ihrer Suchbar-XML-Set-Eigenschaft:

android:max="120"

min ist immer 0.

Jetzt müssen Sie nur noch tun, was Sie tun, den Betrag hinzufügen, um Ihren übersetzten Wert in jeder Änderung zu erhalten, in diesem Fall +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) {
        }
    });

Seien Sie vorsichtig mit der Suchleisten-Eigenschaft android:progress, wenn Sie den Bereich ändern, müssen Sie Ihren anfänglichen Fortschritt neu berechnen. Wenn Sie 50% wollen, max/2, in meinem Beispiel 120/2 = 60;

So legen Sie den Min und Max Wert der Suchleiste fest
Benutzer3131373

Seek Bar hat Methoden zum Festlegen von Höchstwerten, aber nicht zum Festlegen des Mindestwerts. Hier schreibe ich einen Code zum Einstellen des minimalen Suchleistenwerts, wenn wir diesen Code hinzufügen, dann sind Ihre Suchleistenwerte nicht kleiner als der Mim-Wert

/* Diese Methode wird aufgerufen, nachdem sich der Suchbalkenwert geändert hat */

            public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            /* Check the current seekbar value is greather than min value*/
            if (progress < MIN_VALUE) {
                /* if seek bar value is lesser than min value then set min value to seek bar */
                seekBar.setProgress(MIN_VALUE);
            }

        }

  • Bitte erklären Sie, was dieser Code bewirkt. Lassen Sie den Code nur nicht allein.

    – Sri Harsha Chilakapati

    8. Mai ’14 um 9:35

1641812956 955 So legen Sie den Min und Max Wert der Suchleiste fest
Jake Lee

Wenn Sie das verwenden AndroidX-Bibliotheken (import androidx.preference.*), existiert diese Funktionalität ohne hackige Workarounds!

    val seekbar = findPreference("your_seekbar") as SeekBarPreference
    seekbar.min = 1
    seekbar.max = 10
    seekbar.seekBarIncrement = 1

  • Bitte erklären Sie, was dieser Code bewirkt. Lassen Sie den Code nur nicht allein.

    – Sri Harsha Chilakapati

    8. Mai ’14 um 9:35

1641812956 148 So legen Sie den Min und Max Wert der Suchleiste fest
Rahul_Pawar

Für solche Anforderungen habe ich ein Dienstprogramm erstellt, um den Seekbar-Fortschritt wie den folgenden Code anzupassen:

SeekBarUtil.class

   import android.widget.SeekBar;
import android.widget.TextView;

public class SeekBarUtil {

    public static void setSeekBar(SeekBar mSeekbar, int minVal, int maxVal, int intervalVal, final TextView mTextView, String startPrefix, String endSuffix) {

        int totalCount = (maxVal - minVal) / intervalVal;
        mSeekbar.setMax(totalCount);
        mSeekbar.setOnSeekBarChangeListener(new CustomSeekBarListener(minVal, maxVal, intervalVal) {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                //progress = ((int)Math.round(progress/interval))*interval;
                int val = min;
                if (interval == totalCount) {
                    val = max;
                } else {
                    val = min + (progress * interval);
                }
                seekBar.setProgress(progress);
                mTextView.setText(startPrefix + val + endSuffix);
            }
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {  }

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

    }
}

und
CustomSeekBarListener.class

import android.widget.SeekBar;

class CustomSeekBarListener implements SeekBar.OnSeekBarChangeListener {
    int min=0,max=0,interval=1;
    int totalCount;
    public CustomSeekBarListener(int min, int max, int interval) {
        this.min = min;
        this.max = max;
        this.interval = interval;
        totalCount= (max - min) / interval;
    }
    @Override
    public void onProgressChanged(SeekBar seekBar, int i, boolean b) { }
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) { }
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) { }
}

und Sie können es wie den folgenden Codeausschnitt verwenden

SeekBarUtil.setSeekBar(seekbarAmountNeeded,10000,200000,5000,textAmount,"$"," PA");

.

296760cookie-checkSo legen Sie den Min- und Max-Wert der Suchleiste fest

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy