2012-07-03 93 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 
相关问题