Перемещение блока между минимальным значением и максимальным значением в NumberPicker
Я работаю над Android-приложением. Где-то внутри я показываю виджет NumberPicker
.
Как отключить переход между минимальным значением и максимальным значением?
Что я имею в виду, я использую набор цифр с минимальным значением 0 и максимальным значением 9999. Это выглядит так:
![number picker]()
Таким образом, пользователь может быстро бросить виджет, чтобы перейти от 0 до 9999.
Я не хочу этого поведения. Виджет выбора числа, так как теперь он выглядит как замкнутый круг, и я пытаюсь понять, как я могу разбить круг точно между минимальным и максимальным значением, чтобы он выглядел так: от минимального значения и максимального значения:
![number picker minimum value]()
![number picker maximum value]()
Как я могу это достичь?
Что я пробовал:
- Я искал везде в API
NumberPicker
, похоже, что это просто невозможно установить с помощью метода.
- Я думаю, что я могу использовать метод
setDisplayedValues(String[] displayedValues)
для добавления пустых строк до минимального значения и после максимального значения, чтобы до минимального значения или после максимального значения не отображалось значение, НО пользователь все равно сможет пройти мимо них или WORSE: выберите пустое значение.
Любые идеи? Должен ли я загрязнять руки и копаться в реализации виджета? Возможно, внутри прослушивателя прикосновений?
Ответы
Ответ 1
Вы должны вызвать setWrapSelectorWheel(false)
на устройстве выбора номеров. Будьте осторожны, хотя вы делаете setMinimumValue(...)
и setMaximumValue(...)
перед вызовом setWrapSelectorWheel(false)
. Это просто не сработает, если вы поступите иначе.
Как и я, вы можете искать способ сделать это с помощью xml, но в то время не существует способа.
Ответ 2
Разве это setWrapSelectorWheel(false)
(из API)?
Ответ 3
Как указано, setWrapSelectorWheel (false) делает трюк, поэтому один из предложенных ответов должен быть принят.
В общем, этот порядок вызовов работает:
picker.setMinValue(0);
picker.setMaxValue(stringValuesArray.length - 1);
picker.setDisplayedValues(stringValuesArray);
picker.setValue(defaultValue);
picker.setWrapSelectorWheel(false);