我正在尝试使用NumberPicker输入 5.0..30.0 范围内的值,步长为 0.1。所以我将其范围设置为 50..300 并添加了一个格式化程序。上限和下限按我想要的方式表示,但当前的表示不带小数点,比如200,很混乱。
我应该添加哪个监听器(以及在哪里)强制 NumberPicker 始终格式化当前值?我试图禁用可聚焦,禁用可聚焦的儿童,在焦点更改时使用我的格式化程序设置 children[0] 文本……这可能吗?
我正在尝试使用NumberPicker输入 5.0..30.0 范围内的值,步长为 0.1。所以我将其范围设置为 50..300 并添加了一个格式化程序。上限和下限按我想要的方式表示,但当前的表示不带小数点,比如200,很混乱。
我应该添加哪个监听器(以及在哪里)强制 NumberPicker 始终格式化当前值?我试图禁用可聚焦,禁用可聚焦的儿童,在焦点更改时使用我的格式化程序设置 children[0] 文本……这可能吗?
错过了:setDisplayedValues。这就是我需要的。
这是解决方法:而不是设置mWidget.setFormatter(formatter)
,
String[] displayedValues = new String[mWidget.getMaxValue()-mWidget.getMinValue()+1];
for (int number = mWidget.getMinValue(); number<=mWidget.getMaxValue(); number++) {
displayedValues[number-mWidget.getMinValue()] = formatter.format(number);
}
mWidget.setDisplayedValues(displayedValues);