1

我正在尝试为我的 NumberPicker 使用一组由 (-50 -> 50) 组成的数字,NumberPicker 的 MinValue / MaxValue 设置为 0 / 100,然后将默认起点设置为 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

4

2 回答 2

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
于 2013-07-17T12:24:37.553 回答
1

看来您需要实现自己的 NumberPicker 类。您可以从此处的代码开始:http ://www.quietlycoding.com/?p=5 。它显然与 Google NumberPicker 小部件使用的内容很接近。在 EditText 对象上设置的 InputFilter 是防止显示负数的原因。您可以简单地注释掉对 EditText 对象的 setFilters 调用,它将显示负数以帮助您开始。深入研究 InputFilter 实现可以提供更好的解决方案。

于 2012-12-14T18:18:52.913 回答