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
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.
Définissez la valeur maximale sur 30 et ajoutez 20 aux valeurs lues dans la barre SeekBar.
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
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) {}
});
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 !