2016-07-26 15 views
1
private static int INCREMENT_BY = 10; 
private static int MAX = 1000; 
private static int MIN = 0; 
SeekBar seekbar_min, seekbar_max; 
private int max = 0, min = 0; 


seekbar_min.setProgress(MIN); 
    seekbar_min.incrementProgressBy(INCREMENT_BY); 
    seekbar_min.setMax(MAX); 
    seekbar_min.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      progress = progress/INCREMENT_BY; 
      progress = progress * INCREMENT_BY; 
      if (progress < 100) { 
       min = progress * 10; 
      } else if (progress < 300) { 
       min = progress * 50; 
      } else if (progress < 900) { 
       min = progress * 100; 
      } else { 
       min = progress * MAX; 
      } 
      tv_price_min.setText(String.valueOf(min)); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      if (seekBar.getProgress() != MIN || seekBar.getProgress() != MAX){ 
       if (seekBar.getProgress() < 100) { 
        max = seekBar.getProgress() + 10; 
       } else if (seekBar.getProgress() < 300) { 
        max = seekBar.getProgress() + 50; 
       } else if (seekBar.getProgress() < 900) { 
        max = seekBar.getProgress() + 100; 
       } else { 
        max = seekBar.getProgress() + MAX; 
       } 
       seekbar_max.setProgress(max); 
      } 
     } 
    }); 


    seekbar_max.incrementProgressBy(INCREMENT_BY); 
    seekbar_max.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      progress = progress/INCREMENT_BY; 
      progress = progress * INCREMENT_BY; 
      if (progress < 100) { 
       max = progress * 10; 
      } else if (progress < 300) { 
       max = progress * 50; 
      } else if (progress < 900) { 
       max = progress * 100; 
      } else { 
       max = progress * MAX; 
      } 
      tv_price_max.setText(String.valueOf(max)); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
     } 

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

Die Suchleiste ist für den maximalen Preis muss den Mindestwert, der Mindestwert der Suchleiste aktuellen Wert ist. Ich kann das erfolgreich, aber das Problem ist, dass die maximale Suchleiste erlaubt, den Wert min bis 0 zu ändern, was ich nicht will.Min.-Wert für Android Suchleiste

+0

Sie können nicht min Wert einstellen Sie können nur max Wert definieren. – Amir

+0

Die Lösung ist 0 zu Ihrem minimalen Wert in Bearbeitung zu konvertieren – Amir

+0

Nein, ich habe Option, Min-Wert mit setProgress() -Methode festlegen. Aber es funktioniert, wenn der Benutzer den maximalen Suchleistenwert nicht ändert, wenn der Benutzer den maximalen Suchleistenwert ändert, wird er geändert. – JoJo

Antwort

2

In Seekbar haben wir keine setMin Funktion (nur setMax) und Minimum ist immer Null. Wenn Sie Minimalwert für Ihre Seekbar festlegen möchten können Sie zwei Möglichkeiten:

  • Konvertieren Nullwert Sie Minimum
  • In ProgressChange nicht erlauben, mit folgendem Ausschnitt unter diesem Minimum zu gehen:
if (seekbar.getProgress() < MIN_VALUE) { 
    seekbar.setProgress(MIN_VALUE); 
} 
0

tatsächlich können Sie nicht den Minimalwert definieren. Aber es gibt Trick, den ich immer wie folgt:

in der „onProgressChanged“ Metod, diesen Code Setzen Sie dieses

int min = 1;         //The Min Value You Want To 
int progressValue; 

if(i < min) {        // i : Progress Value 
    progressValue = min; 
    seekBar.setProgress(min); 
       }else progressValue = i; 
1

Versuchen konnte ich dies meiner Projekte auf einem tun. In diesem Fall ist das Maximum 23 und das Minimum ist 8.

 seekBarLength = findViewById(R.id.seekBarLength); 
     seekBarLength.setMax(23-8); 
     seekBarLength.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
       progress += 8; 
       textViewPasswordLength.setText(progress + ""); 
      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 

      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 

      } 
     }); 
Verwandte Themen