Есть ли способ предложить или ограничить ввод с клавиатуры при выборе NumberPicker, поэтому при вводе значений отображаются только числовые элементы, аналогичные тому, как вы можете использовать android:inputType="number"
с EditText?Ограничение Android NumberPicker на числовую клавиатуру для ввода цифр (не Alpha)
У меня есть ряд значений от 0.0 до 100.0 с шагом 0,1, что я хотел бы использовать NumberPicker для выбора в Android 4.3. Для того, чтобы иметь Выбирается числа, я создал массив строк, который соответствует этим значениям, как показано ниже:
NumberPicker np = (NumberPicker) rootView.findViewById(R.id.programmingNumberPicker);
int numberOfIntensityOptions = 1001;
BigDecimal[] intensityDecimals = new BigDecimal[numberOfIntensityOptions];
for(int i = 0; i < intensityDecimals.length; i++)
{
// Gets exact representations of 0.1, 0.2, 0.3 ... 99.9, 100.0
intensityDecimals[i] = BigDecimal.valueOf(i).divide(BigDecimal.TEN);
}
intensityStrings = new String[numberOfIntensityOptions];
for(int i = 0; i < intensityDecimals.length; i ++)
{
intensityStrings[i] = intensityDecimals[i].toString();
}
// this will allow a user to select numbers, and bring up a full keyboard. Alphabetic keys are
// ignored - Can I somehow change the keyboard for this control to suggest to use *only* a number keyboard
// to make it much more intuitive?
np.setMinValue(0);
np.setMaxValue(intensityStrings.length-1);
np.setDisplayedValues(intensityStrings);
np.setWrapSelectorWheel(false);
Как больше информации, я заметил, что если я не использую метод setDisplayedValues()
и вместо этого задайте целые числа непосредственно, будет использоваться числовая клавиатура , которая будет, но проблема заключается в том, что введенное число в 10 раз больше, чем должно быть - например если вы введете «15» в управление его интерпретировать как «1.5»
// This will allow a user to select using a number keyboard, but input needs to be 10x more than it should be.
np.setMinValue(0);
np.setMaxValue(numberOfIntensityOptions-1);
np.setFormatter(new NumberPicker.Formatter() {
@Override
public String format(int value) {
return BigDecimal.valueOf(value).divide(BigDecimal.TEN).toString();
}
});
Любые предложения о том, как поднять цифровую клавиатуру, чтобы позволить пользователю вводить десятичные числа, как это?
Отличный вопрос, вы когда-нибудь это понимали? Я хотел бы знать, как это сделать! –
@AlanMoore К сожалению, нет, я не понял, как это сделать. – CrimsonX
Пробовали ли вы искать текстовое представление для детей, а затем, используя свое изменение выше, чтобы получить свою клавиатуру? –