2016-11-10 68 views
0

同時更改一個搜索欄的值在一個活動中有三個搜索欄。所有的人都爲100最大我需要總結的所有三個是100如何根據其他

seek1 = 50和seek2 = 45,然後seek3必須爲5 當我滑到seek1到55 seek3必須有0.等

我該如何編碼?

對不起,這裏是我的代碼:

//01 
    final SeekBar seekBar01 = (SeekBar)findViewById(R.id.seek01); 
      final TextView seekBar01Value = (TextView)findViewById(R.id.txt01val); 
      seekBar01.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
       @Override 
       public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
        seekBar01Value.setText(String.valueOf(progress)); 
       } 

       @Override 
       public void onStartTrackingTouch(SeekBar seekBar) { 

       } 

       @Override 
       public void onStopTrackingTouch(SeekBar seekBar) { 

       } 
      }); 
    //02 
      SeekBar seekBar02 = (SeekBar)findViewById(R.id.seek02); 
      final TextView seekBar02Value = (TextView)findViewById(R.id.txt02val); 
      seekBar02.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
       @Override 
       public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
        seekBar02Value.setText(String.valueOf(progress)); 
       } 

       @Override 
       public void onStartTrackingTouch(SeekBar seekBar) { 

       } 

       @Override 
       public void onStopTrackingTouch(SeekBar seekBar) { 

       } 
      }); 

//03 
      SeekBar seekBar03 = (SeekBar)findViewById(R.id.seek03); 
      final TextView seekBar03Value = (TextView)findViewById(R.id.txt03val); 
      seekBar03.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
       @Override 
       public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
        seekBar03Value.setText(String.valueOf(progress)); 
       } 

       @Override 
       public void onStartTrackingTouch(SeekBar seekBar) { 

       } 

       @Override 
       public void onStopTrackingTouch(SeekBar seekBar) { 

       } 
      }); 

我可以顯示在相應的TextViews值,但沒有得到如何改變另一個seebar進步來自其他搜索條onProgressChanged。

+0

你停留在邏輯或'SeekBar'代碼?顯示你迄今爲止做了什麼。 –

+0

請告訴我們你到目前爲止所嘗試過的。堆棧溢出不是一種代碼編寫服務,但如果你至少試圖自己解決問題,人們願意幫助你。請閱讀[如何創建最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)和[我如何提出一個好問題?](http://stackoverflow.com/help/如何對問)。然後,更新並改進*問題*。 –

回答

0

問題是由於SeekBar的遲聲明。 如果收集所有SeekBar seekBarXX =(SeekBar)findViewById(R.id.seekXX);比Change listeners更快地按預期工作。 對不起愚蠢。 這裏是代碼:

final SeekBar seekBar01 = (SeekBar)findViewById(R.id.seek01); 
final SeekBar seekBar02 = (SeekBar)findViewById(R.id.seek02); 
final SeekBar seekBar03 = (SeekBar)findViewById(R.id.seek03); 

seekBar01.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {     
       seekBar02.setProgress(100-seekBar01.getProgress()); 
      } 
... 
     });