Android 数字选择器 setMin/Max
Android NumberPicker setMin/Max
我尝试在 NumberPicker 上设置 min/max。我有以下值:
One, Two, Three, Four
我设置
picker.setMinValue(0);
picker.setMaxValue(1);
选择器将显示
One, Two
然而当我设置
picker.setMinValue(1);
picker.setMaxValue(1);
它显示 One
但我预计 Two
。我很迷惑。为什么显示的是一?
picker.setMaxValue(2) 应该给两个,如果最大值是 1 你怎么能期望 2
it displays One but I expect Two. I am confused. Why is One displayed
instead?
因为NumberPicker
和你想的有点不一样。
在数字选择器中,您使用如下代码设置值:
numberPicker.setMinValue(7);
numberPicker.setMaxValue(10);
您的 NumberPicker
将有数字 7、8、9、10。
然后使用 setDisplayedValues:
numberPicker.setDisplayedValues(new String[]{"One", "Two", "Three", "Four"});
NumberPicker
有字符串 "One"、"Two"、"Three"、"Four"。
现在更改最小值:
numberPicker.setMinValue(10);
numberPicker.setMaxValue(10);
NumberPicker
有字符串 "One"。
这是为什么?
因为实际值和显示值之间没有相关性。正如您在 NumberPicker
的 source code 中所见,显示的文本是这样计算的:
String text = (mDisplayedValues == null) ? formatNumber(mValue) : mDisplayedValues[mValue - mMinValue];
因此,如果您的最小值为 10 而所选值为 10,则显示的文本是数组的第一个元素。
回到你的例子,如果你想在将最小值和最大值设置为 1 时显示字符串 "Two",你需要相应地更改数组:
numberPicker.setDisplayedValues(new String[]{"Two"});
picker.setMinValue(1);
picker.setMaxValue(1);
我尝试在 NumberPicker 上设置 min/max。我有以下值:
One, Two, Three, Four
我设置
picker.setMinValue(0);
picker.setMaxValue(1);
选择器将显示
One, Two
然而当我设置
picker.setMinValue(1);
picker.setMaxValue(1);
它显示 One
但我预计 Two
。我很迷惑。为什么显示的是一?
picker.setMaxValue(2) 应该给两个,如果最大值是 1 你怎么能期望 2
it displays One but I expect Two. I am confused. Why is One displayed instead?
因为NumberPicker
和你想的有点不一样。
在数字选择器中,您使用如下代码设置值:
numberPicker.setMinValue(7);
numberPicker.setMaxValue(10);
您的 NumberPicker
将有数字 7、8、9、10。
然后使用 setDisplayedValues:
numberPicker.setDisplayedValues(new String[]{"One", "Two", "Three", "Four"});
NumberPicker
有字符串 "One"、"Two"、"Three"、"Four"。
现在更改最小值:
numberPicker.setMinValue(10);
numberPicker.setMaxValue(10);
NumberPicker
有字符串 "One"。
这是为什么?
因为实际值和显示值之间没有相关性。正如您在 NumberPicker
的 source code 中所见,显示的文本是这样计算的:
String text = (mDisplayedValues == null) ? formatNumber(mValue) : mDisplayedValues[mValue - mMinValue];
因此,如果您的最小值为 10 而所选值为 10,则显示的文本是数组的第一个元素。
回到你的例子,如果你想在将最小值和最大值设置为 1 时显示字符串 "Two",你需要相应地更改数组:
numberPicker.setDisplayedValues(new String[]{"Two"});
picker.setMinValue(1);
picker.setMaxValue(1);