он отображает один, но я ожидаю два. Я смущен. Почему вместо этого отображается один?
Потому что 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
есть строки "One".
Это почему?
Потому что нет корреляции между реальными значениями и отображаемыми значениями. Как видно из исходного кода code of NumberPicker
вот как вычисляется отображаемый текст:
String text = (mDisplayedValues == null) ? formatNumber(mValue) : mDisplayedValues[mValue - mMinValue];
Итак, если ваше минимальное значение равно 10, а выбранное значение равно 10, отображаемый текст является первым элементом массива.
Возвращаясь к вашему примеру, если вы хотите отобразить строку «Два», когда установите минимальное и максимальное значение равным 1, вам необходимо соответствующим образом изменить массив:
numberPicker.setDisplayedValues(new String[]{"Two"});
picker.setMinValue(1);
picker.setMaxValue(1);
person
Mattia Maestrini
schedule
17.10.2015