2016-11-11 3 views
1

Ich versuche, die Bewegung einer bestimmten seekBar zu stoppen, nachdem sie einen dynamischen Punkt erreicht hat (berechnet durch Subtraktion des Wertes setMax() und anderen seekBar.getProgress()). Ich habe versucht, das onTouchEvent() zu verwenden, aber konnte die Bewegung des Taktes nicht stoppen und manuell seekBar.setProgress() einstellen, aber es springt nur zu diesem Punkt und setzt fort, sich mit dem Finger zu bewegen.Wie man die Bewegung von seekBar nach einem dynamischen Punkt stoppt

sb1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      sb1.setMax(Integer.parseInt(et.getText().toString())); 
      if (progress >= Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress()) 
       sb1.setProgress(progress); 
      tv1.setText(String.valueOf(progress)); 
     } 


    }); 

    sb2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      sb2.setMax(Integer.parseInt(et.getText().toString())); 

      if (progress >= Integer.parseInt(et.getText().toString()) - sb1.getProgress() - sb3.getProgress()) 
       sb2.setProgress(progress); 
      tv2.setText(String.valueOf(progress)); 
     } 

    }); 

bitte helfen

Antwort

1

Sie haben

if (progress >= Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress()) 
    sb1.setProgress(progress); 

In Ihrem sb1 ändern Zuhörer. Das macht aber keinen Sinn, denn progress ist schon der Fortschritt von sb1. Ich glaube, Sie dies ändern sollte:

sb1.setProgress(progress); 

An:

sb1.setProgress(Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress()); 

Der Wert I für diesen Fortschritt von Ihrem if Zustand war bekam. Wenn der Fortschritt größer als dieser Wert ist, legen Sie ihn einfach auf den Wert fest. So kann es nicht über diesen Punkt hinaus gezogen werden.

Tun Sie das Gleiche auch für Ihre anderen Zuhörer.

+0

Vielen Dank! Mit dieser Antwort habe ich es geschafft, die Bewegung der Daumenleiste zu stoppen (obwohl sich der Fortschritt noch fortsetzt, aber ich kann einen Weg finden, um es zu umgehen). – ProBul

+0

Großartig! Froh, dass ich helfen konnte. –

0

das seekbar Objekt deaktivieren, nachdem Sie die gewünschten Fortschritte erreicht haben:

sb1.setEnable (false) 
+0

Diese Methode friert die SeekBar ohne die Option ein, sie danach weiter zu verwenden. – ProBul

Verwandte Themen