2012-07-03 62 views
1

我想爲我的NumberPicker使用一組數字(-50-> 50),NumberPicker的MinValue/MaxValue被設置爲0/100,然後setValue爲50爲默認起點(0),任何想法爲什麼它顯示的數字除了-1至-5 ...沒有選擇時,他們顯示正常......當選擇它們顯示爲-19,-29,-39, -49,-50。具有負值和正值的NumberPicker

我已經測試了我給它提供的int數組,並且所有的值都很好。

這是我使用的填充NumberPicker的代碼片段...

String[] currentScoreArray = new String[100]; 
final NumberPicker currentScore = (NumberPicker) findViewById(R.id.currentScore); 
for (int i = 0; i <= 100; i++) 
    currentScoreArray[i] = Integer.toString(i - 50); 
currentScore.setMaxValue(100); 
currentScore.setMinValue(0); 
currentScore.setWrapSelectorWheel(false); 
currentScore.setDisplayedValues(currentScoreArray); 
currentScore.setValue(50); 

巴巴男高音交談後,我仍然無法解決這個我做了這個問題的YouTube視頻,其中包括視頻評論鏈接中的代碼和logcat。

http://www.youtube.com/watch?v=bF39THktVY4

+0

請發表你在哪裏處理和顯示選項的代碼。 – Erol

+0

你指的是XML嗎?我沒有使用任何代碼來處理和顯示選擇,因爲NumberPicker是一個android類(我讓android代碼爲我做了這一切)。 – kyau

+0

我不明白你的代碼。首先,如果您希望範圍爲[-50,50],爲什麼將最小值和最大值設置爲0和100?其次,爲什麼不嘗試在-50到50之間運行for循環,而不是每次都處理(i-50)操作。 – Erol

回答

1

好像你需要實現自己的NumberPicker類。您可以從這裏的代碼開始:http://www.quietlycoding.com/?p=5。它顯然接近Google NumberPicker窗口小部件的用途。 在EditText對象上設置的InputFilter是防止顯示負數的原因。你可以直接在EditText對象上註釋掉對setFilters的調用,它會顯示負數來幫助你開始。挖掘InputFilter實現可以提供更好的解決方案。

3

老問題,但我張貼其他用戶的想法:

也許你可以使用一個NumberPicker.Formatter

例子:

final int minValue = -50 
final int maxValue = 50 
NumberPicker numberPicker = new NumberPicker(myActivity); 
numberPicker.setMinValue(0); 
numberPicker.setMaxValue(maxValue - minValue); 
numberPicker.setValue(myCurrentValue - minValue); 
numberPicker.setFormatter(new NumberPicker.Formatter() { 
    @Override 
    public String format(int index) { 
     return Integer.toString(index - minValue); 
    } 
}); 

然後取回所選擇的值:

int myNewValue = numberPicker.getValue() + minValue 
相關問題