Intereting Posts
Сервер доступа эмулятора android в локальной сети Как интегрировать сканер штрих-кода Zxing без установки реального приложения zxing (невозможно разрешить символ: .android.CaptureActivity)? Отключение PopupWindow при касании вне всплывающего окна, без использования устаревшего конструктора Всегда показывать полный заголовок в ActionBar Recyclerview и обработка различных типов инфляции строк OnPostExecute при отмене AsyncTask Пользовательский указатель большого пальца не прозрачен на Lollipop API21 Удаленная отладка с эмулятором Android Разрыв между левым рисунком и текстом в EditText NullPointerException, которое не указывает на какую-либо строку в моем коде Не удалось найти класс 'android.widget.ThemedSpinnerAdapter' Установите «dev» сборку приложения для Android на боковой рыночной версии Нет ли подсказки в расширителе Android 4.x? Каковы наилучшие методы использования AES-шифрования в Android? Как получить доступ к датчику сердечного ритма Android RAW DATA? (Отраженный свет, а не сердцебиение)

Android NumberPicker – Отрицательные числа

Кто-нибудь знает простой способ разрешить отрицательные числа с номером телефона по умолчанию для Android? Я понимаю, что это InputFilter запрещает это, но есть ли простой способ переопределить, не переписывая весь виджет?

Любая помощь будет принята с благодарностью.

Solutions Collecting From Web of "Android NumberPicker – Отрицательные числа"

Более общее и элегантное решение – использовать NumberPicker.Formatter и использовать только положительные числа в NumberPicker.

Пример, если я хочу выбрать номер в [-50, 50]:

final int minValue = -50 final int maxValue = 50 NumberPicker numberPicker = new NumberPicker(myActivity); numberPicker.setMinValue(0); numberPicker.setMaxValue(maxValue - minValue); numberPicker.setValue(myCurrentValue - minValue); numberPicker.setFormatter(new NumberPicker.Formatter() { @Override public String format(int index) { return Integer.toString(index - minValue); } }); 

Затем, чтобы вернуть выбранное значение:

 int myNewValue = numberPicker.getValue() + minValue 

Использование:

 String[] nums {"-1","-2","-3","-4"}; numberpicker.setDisplayedValues(nums); 

или

 String[] nums = new String[4]; for(int i=0; i<nums.length; i++) nums[i] = "-" + Integer.toString(i); numberpicker.setDisplayedValues(nums); 

Любой из них позволит вам использовать любой набор строк для вашего NumberPicker. То, что вы делаете, это указать набор строк, которые вы передаете в NumberPicker. Затем он отображает ваши значения вместо стандартных.

У меня недостаточно репутации, чтобы комментировать, просто хотел исправить сообщение alberthier, он должен иметь index + minValue

Вот окончательный код:

 final int minValue = -50 final int maxValue = 50 NumberPicker numberPicker = new NumberPicker(myActivity); numberPicker.setMinValue(0); numberPicker.setMaxValue(maxValue - minValue); numberPicker.setValue(myCurrentValue - minValue); numberPicker.setFormatter(new NumberPicker.Formatter() { @Override public String format(int index) { return Integer.toString(index + minValue); } }); 

Вот пример, который вы ищете.

 private static final int DEFAULT_MAX = 200; private static final int DEFAULT_MIN = 0;// change this acc to your requirement