具有负值和正值的NumberPicker

时间:2012-07-03 00:46:28

标签: android

我正在尝试使用一组包含(-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。

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

2 个答案:

答案 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实现可以提供更好的解决方案。