0

我尝试在 NumberPicker 上设置最小值/最大值。我有以下价值观:

One, Two, Three, Four

我设置

picker.setMinValue(0);
picker.setMaxValue(1);

选择器将显示

One, Two

但是,当我设置

picker.setMinValue(1);
picker.setMaxValue(1);

它显示One,但我期望Two。我很困惑。为什么会显示 One?

4

2 回答 2

3

它显示一个,但我期望两个。我很困惑。为什么会显示 One?

因为NumberPicker工作与您的想法有些不同。

在数字选择器中,您使用如下代码设置值:

numberPicker.setMinValue(7);
numberPicker.setMaxValue(10);

NumberPicker将拥有数字 7、8、9、10。然后使用setDisplayedValues

numberPicker.setDisplayedValues(new String[]{"One", "Two", "Three", "Four"});

具有NumberPicker字符串“一”、“二”、“三”、“四”。

现在更改最小值:

numberPicker.setMinValue(10);
numberPicker.setMaxValue(10);

NumberPicker字符串“一”。

这是为什么?

因为实际值和显示值没有相关性。正如您在源代码中看到NumberPicker的,显示的文本是如何计算的:

String text = (mDisplayedValues == null) ? formatNumber(mValue) : mDisplayedValues[mValue - mMinValue];

因此,如果您的最小值为 10 且所选值为 10,则显示的文本是数组的第一个元素。

返回到您的示例,如果要在将最小值和最大值设置为 1 时显示字符串“Two”,则需要相应地更改数组:

numberPicker.setDisplayedValues(new String[]{"Two"});
picker.setMinValue(1);
picker.setMaxValue(1);
于 2015-10-17T09:09:08.410 回答
0

picker.setMaxValue(2) 应该给两个,如果最大值是 1,你怎么能期望 2

于 2015-10-16T15:56:54.973 回答