2017-11-27 3 views
0

Ich habe eine Liste von Suchleisten. Was ich will, ist die Grenze der Suchleiste zu setzen. Obwohl ich es getan habe, indem ich seekBar.setMax(anyIntValue); verwende, aber das setzt den gesamten Suchleistenwert. Aber was ich will, ist zum Beispiel Benutzer wählt die erste Suchleiste zu 90% die zweite sollte nur auf 10% gezogen werden.Setzen Sie Limit auf den Schleppbereich des Suchbalkens

Dies ist mein Code:

holder.shelfShareSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
       holder.percentTextView.setText(String.valueOf(progress)); 
      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 
       remainingShelfShare = 100 - shelfShareSum; 
       seekBar.setMax(remainingShelfShare); 
      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 
       list.get(position).setSetSlider(seekBar.getProgress()); 
       shelfShareSum = 0; 

       productShelfShareMap.put(((Products)list.get(position)).getProductID(), Integer.parseInt(holder.percentTextView.getText().toString())); 
       for (HashMap.Entry<Integer, Integer> entry : productShelfShareMap.entrySet()){ 
        shelfShareSum += entry.getValue(); 
       } 

      } 
     }); 
+0

Sie müssen die Suchleiste in diesem Fall anpassen. – ADM

+0

Können Sie ein bisschen mehr klären? @ADM oder kannst du ein Beispiel posten? –

Antwort

0

Hier ist mein Code für mich gut funktioniert.

seekBar1 = (SeekBar)findViewById(R.id.seekBar1); 
seekBar2 = (SeekBar)findViewById(R.id.seekBar2); 

Satz seekBarChangeListener auf beiden seekBar

//seekBar1 
seekBar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

      if(seekBar2.getProgress()>0){ 
       seekBar2.setProgress(0); 
       seekBar2.setFocusable(false); 
      } 
     } 
    }); 

//seekBar2 


seekBar2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 

Nun fügen setOnTouchListener auf seekBar2 für Stop-Tracking-Touch-Ereignis in seekBar2

seekBar2.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      int firstProgress = (100 - seekBar1.getProgress()); //100 max range of seekBar 
      int secondProgress = seekBar2.getProgress(); 
      return secondProgress >= firstProgress; 
     } 
    }); 

Ich hoffe, dass dieser Code hilfreich sein migh.

Verwandte Themen