我正在尝试使用一组包含(-50 - > 50)的NumberPicker的数字,NumberPicker的MinValue / MaxValue设置为0/100,然后将setValue设置为50作为默认起点(0),任何想法为什么它正确地显示数字除了-1到-5 ...当没有被选中时它们显示正常...当被选中时它们显示为-19,-29,-39,-49,-50
我已经测试了我正在喂它的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);
在与baba男高音谈话之后,我仍然无法解决这个问题我已经制作了一个关于该问题的YouTube视频,并在视频评论的链接中包含了代码和logcat。
答案 0 :(得分: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
答案 1 :(得分:1)
您似乎需要实现自己的NumberPicker类。您可以在此处开始使用代码:http://www.quietlycoding.com/?p=5。它显然接近Google NumberPicker小部件使用的内容。 在EditText对象上设置的InputFilter可以防止显示负数。您可以简单地在EditText对象上注释掉对setFilters的调用,它将显示负数以帮助您入门。深入研究InputFilter实现可以提供更好的解决方案。