2017-11-27 17 views
0

シークバーのリストがあります。私が望むのは、シークバーの限界を設定することです。私はseekBar.setMax(anyIntValue);を使って行っていますが、これはシークバーの値全体を設定します。しかし、私が望むのは、ユーザーが最初のシークバーを90%に選択し、2番目のシークバーを10%にドラッグするだけです。シークバーのドラッグ範囲に制限を設定

これは私のコードです:

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

この場合、シークバーをカスタマイズする必要があります。 – ADM

+0

もう少し明確にすることはできますか? @ADM、または例を投稿できますか? –

答えて

0

は、ここで私のために正常に動作して私のコードです。シークバー

//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) { 

     } 
    }); 

の両方で

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

セットseekBarChangeListenerは今、私はこのコードを参考にmighを願ってい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; 
     } 
    }); 

をseekBar2にsetOnTouchListenerを追加します。