Хотя это не ракетостроение, я не хочу изобретать велосипед. Я работаю с Android, подключенным через USB-аксессуар к аппаратным устройствам. HW имеет значения, которые могут быть установлены пользовательским интерфейсом Android. Многие из этих значений составляют 8 бит. Поэтому определенные байтовые поля могут быть отредактированы пользователем, и я хочу легко получить их вход и проверить его. Итак, в основном шестнадцатеричный ввод 0x00 - 0xff Просто интересно, это уже существует где-то там? Интернет не дает мне многого, поэтому он выглядит как начинающий с нуля.Пользовательский ввод пользователя с шестнадцатеричным байтом
ответ
Вы можете использовать обычный NumberPicker
с обычаем NumberPicker.Formatter
для форматирования значений в виде шестнадцатеричных цифр:
public class MyFormatter extends NumberPicker.Formatter {
@Override
public String format(int value) {
if(value < 0x10) {
return "0" + Integer.toHexString(value);
}
return Integer.toHexString(value);
}
}
, а затем использовать:
...
myNumberPicker.setFormatter(new MyFormatter());
// use this to disable keyboard input
myNumberPicker.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
...
Скриншот NumberPicker с гекса Formatter
:
Спасибо за эту информацию, но входные данные Android Number, похоже, ограничены входом Десятичный. На данный момент я использовал клавиатуру. – jwhitmore
Я обновил свой ответ, чтобы сделать его более ясным; мой метод не позволяет вводить значения с помощью клавиатуры (на самом деле это так, но это путает, так как клавиатура десятичная). – caspase
В то время как NumberPicker будет работать, он просто не выглядит элегантным для выбора значения байта. Таким образом, диапазон составляет от 0 до 255. The Number Picker отлично работает для ограниченного диапазона, но для этого типа диапазона он нападает на меня как громоздкий механизм ввода. – jwhitmore
Было бы неплохо согласиться с этим ответом, если вы сочтете это полезным или иным образом прокомментируйте его! – caspase