2016-02-19 36 views
1

我目前在我的應用程序中使用了一對搜索欄。有2個給我帶來麻煩。我將這兩個查找條的最大值設置爲10.Android java:正確使用seekbar的progressValue

我將使用seekbars的值在我的代碼中更改2個數字。

所以基本上,我有2個變量有一個範圍。一種是蛋白質模型,可以是0.8到1.0之間的任何值,fatmod可以是0.3到0.6之間的任何值。我從搜索條採取progressValue和值轉換爲存儲爲雙百分比,然後該幹嘛方程

proteinmod = proteinmod = 0.8+(progressValue/10)*0.2; 
fatmod = 0.3+(progressValue/10)*0.3; 

我的問題:的seekbars只有半功能。當一直走到左邊時,它們是預期範圍的最小值 - 但保持該值直到seekbar完全超出,然後proteinmod和fatmod被設置爲最大值。我試着設置一個等於進度值的textview並在不同的位置測試它,並且progressValue確實工作正常。但由於某些原因,這些mod值不會在我想要的範圍內的其他地方假設值。這是我的代碼。提前感謝你!

double proteinmod = 0; 
double fatmod = 0; 

    seekbar2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) { 
      proteinmod = 0.8+(progressValue/10)*0.2; 
      tv6.setText(String.valueOf(proteinmod)); 
      updateOutput(); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
     } 
    }); 

    seekbar3.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) { 
      fatmod = 0.3+(progressValue/10)*0.3; 
      tv6.setText(String.valueOf(fatmod)); 
      updateOutput(); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 
     } 
    }); 

我相信這應該是您需要的所有代碼,但如果您需要其他位,請隨時詢問。

回答

1

嘗試以下方法:

proteinmod = 0.8+(progressValue/10d)*0.2; 

fatmod = 0.3+(progressValue/10d)*0.3; 

由於progressValue和10均爲整數的除法的結果是一個整數。將10投擲到雙倍應該解決問題。

+0

哦,非常感謝你!修正它正是我想要的。 我一直認爲,如果你做了一個整數和一個雙數的數學,整數將用於它的雙重對手。感謝您解決這個問題! –