具有负值和正值的数字选取器

  • 本文关键字:数字 选取 android
  • 更新时间 :
  • 英文 :


我正在尝试为我的数字选择器使用一组数字,其中包括(-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 实现可以提供更好的解决方案。

最新更新