Der Mindestwert ist immer 0. Er kann nicht geändert werden.
– GareginSargsyan
24. Dez. ’13 um 14:23
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
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.
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
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;
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
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
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
Ü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