【发布时间】:2015-03-28 20:00:42
【问题描述】:
我正在尝试创建一个数字选择器来选择月份。 只要我通过滚动选择值,或者如果我使用键盘通过文本输入月份(例如“jan”代表 januari),它就可以工作
我还希望我的用户能够输入“1”来选择 Januari。 从 numberpicker 源代码看来,这应该是可能的:
/**
* @return The selected index given its displayed <code>value</code>.
*/
private int getSelectedPos(String value) {
if (mDisplayedValues == null) {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
// Ignore as if it's not a number we don't care
}
} else {
for (int i = 0; i < mDisplayedValues.length; i++) {
// Don't force the user to type in jan when ja will do
value = value.toLowerCase();
if (mDisplayedValues[i].toLowerCase().startsWith(value)) {
return mMinValue + i;
}
}
/*
* The user might have typed in a number into the month field i.e.
* 10 instead of OCT so support that too.
*/
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
// Ignore as if it's not a number we don't care
}
}
return mMinValue;
}
问题是,如果我尝试输入一个数字,EditText 只是保持为空。 这就是我初始化我的数字选择器的方式:
//getting the months using Calendar
Calendar cal = Calendar.getInstance();
Map<String, Integer> monthMap = cal.getDisplayNames(Calendar.MONTH, Calendar.LONG, Locale.getDefault());
TreeMap<Integer, String> sorted = new TreeMap<>();
for(Map.Entry<String, Integer> entry : monthMap.entrySet()) {
sorted.put(entry.getValue(), entry.getKey());
}
String[] displayNames = sorted.values().toArray(new String[]{});
mMonthPicker.setMinValue(0);
mMonthPicker.setMaxValue(11);
mMonthPicker.setDisplayedValues(displayNames);
mMonthPicker.setWrapSelectorWheel(false);
我尝试使用here 给出的答案将编辑文本的输入类型设置为 InputType.TYPE_NULL,但这并没有改变任何东西。
如果我尝试输入数字,编辑文本将保持空白。
【问题讨论】:
标签: android numberpicker