我尝试在 NumberPicker 上设置最小值/最大值。我有以下价值观:
One, Two, Three, Four
我设置
picker.setMinValue(0);
picker.setMaxValue(1);
选择器将显示
One, Two
但是,当我设置
picker.setMinValue(1);
picker.setMaxValue(1);
它显示One
,但我期望Two
。我很困惑。为什么会显示 One?
我尝试在 NumberPicker 上设置最小值/最大值。我有以下价值观:
One, Two, Three, Four
我设置
picker.setMinValue(0);
picker.setMaxValue(1);
选择器将显示
One, Two
但是,当我设置
picker.setMinValue(1);
picker.setMaxValue(1);
它显示One
,但我期望Two
。我很困惑。为什么会显示 One?
它显示一个,但我期望两个。我很困惑。为什么会显示 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);
picker.setMaxValue(2) 应该给两个,如果最大值是 1,你怎么能期望 2