我有一个 NumberPicker,它有一个格式化程序,可以在 NumberPicker 旋转或手动输入值时格式化显示的数字。这工作正常,但是当 NumberPicker 首次显示并且我用以下命令初始化它时setValue(0)
0 不会被格式化(它应该显示为“-”而不是 0)。一旦我从那时开始旋转 NumberPicker,一切都会正常。
如何强制 NumberPicker 始终格式化 - 无论是在第一次渲染时还是当我使用键盘手动输入数字时?
这是我的格式化程序
public class PickerFormatter implements Formatter {
private String mSingle;
private String mMultiple;
public PickerFormatter(String single, String multiple) {
mSingle = single;
mMultiple = multiple;
}
@Override
public String format(int num) {
if (num == 0) {
return "-";
}
if (num == 1) {
return num + " " + mSingle;
}
return num + " " + mMultiple;
}
}
我将格式化程序添加到选择器中setFormatter()
,这就是我对选择器所做的一切。
picker.setMaxValue(max);
picker.setMinValue(min);
picker.setFormatter(new PickerFormatter(single, multiple));
picker.setWrapSelectorWheel(wrap);
德格尔溶液 https://stackoverflow.com/a/19104078/332528对我不起作用:当我点击选择器时,格式再次消失。该错误是由于输入过滤器设置为ON引起的EditText
inside NumberPicker
when setDisplayValues
没有被使用。所以我想出了这个解决方法:
Field f = NumberPicker.class.getDeclaredField("mInputText");
f.setAccessible(true);
EditText inputText = (EditText)f.get(mPicker);
inputText.setFilters(new InputFilter[0]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)