我正在尝试为我的数字选择器使用一组数字,其中包括(-50 -> 50),NumberPicker的最小值/最大值设置为0/100,然后将默认值设置为50(0),知道为什么它正确显示数字,除了-1到-5... 如果未选中,它们显示正常...选中后,它们将显示为 -19、-29、-39、-49、-50。
我已经测试了我正在输入它的 int 数组,其中的所有值都很好。
这是我用来填充数字选择器的代码片段......
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);
在与baba男高音交谈后,我仍然无法解决这个问题,我已经制作了该问题的YouTube视频,并在视频评论的链接中包含代码和logcat。
http://www.youtube.com/watch?v=bF39THktVY4
老问题,但我为其他用户发布了一个想法:
也许你可以使用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
看起来你需要实现自己的NumberPicker类。您可以从下面的代码开始:http://www.quietlycoding.com/?p=5。它显然接近Google NumberPicker小部件使用的内容。在 EditText 对象上设置的输入筛选器是防止显示负数的原因。您可以简单地注释掉对 EditText 对象上的 setFilters 的调用,它将显示负数以帮助您入门。深入研究 InputFilter 实现可以提供更好的解决方案。