我正在尝试https://github.com/SimonVT/android-numberpicker库,引用现在是https://developer.android.com/reference/android/widget/NumberPicker.html#getValue%28%29,API级别11 NumberPicker返回getValue方法中的int值,以及SimonVT编号选择器返回int值。
但是,我使用以下代码在数字选择器中设置了双值:
String[] nums = {"1","1.5","2","2.5","3","3.5","4","4.5","5","5.5","6","6.5","7","7.5","8","8.5","9"};
final NumberPicker listeningScorenp = (NumberPicker) findViewById(R.id.listeningScore);
listeningScorenp.setMaxValue(nums.length-1);
listeningScorenp.setMinValue(0);
listeningScorenp.setWrapSelectorWheel(false);
listeningScorenp.setDisplayedValues(nums);现在,我一直在研究如何从NUmberPicker中检索浮点/双值。
发布于 2013-08-29 03:17:36
我只是用你的代码进行了测试。getValue()实际上返回所选项的索引(仅当您设置显示的值时)。您所需要做的就是解析字符串,这样就可以得到所需的东西。
String[] nums = {"1","1.5","2","2.5","3","3.5","4","4.5","5","5.5","6","6.5","7","7.5","8","8.5","9"};
int index = listeningScorenp.getValue();
String val = nums[index];
float selectedFloat = Float.parseFloat(val);发布于 2020-01-12 12:39:55
在Kotlin中,您可以使用这个方便的NumberPicker扩展,它提供了一个对话框--它将Double值缩放为一个合适的Int范围,并在调用任何回调之前将Int值转换回Double。因此,它基本上掩盖了NumberPicker只支持Int这一事实。就好像NumberPicker真的会支持Double一样,试试吧!
下面是可以复制和粘贴的片段扩展
fun Fragment.showNumberPickerDialog(
title: String,
value: Double,
range: ClosedRange<Double>,
stepSize: Double,
formatToString: (Double) -> String,
valueChooseAction: (Double) -> Unit
) {
val numberPicker = NumberPicker(context).apply {
setFormatter { formatToString(it.toDouble() * stepSize) }
wrapSelectorWheel = false
minValue = (range.start / stepSize).toInt()
maxValue = (range.endInclusive / stepSize).toInt()
this.value = (value.toDouble() / stepSize).toInt()
// NOTE: workaround for a bug that rendered the selected value wrong until user scrolled, see also: https://stackoverflow.com/q/27343772/3451975
(NumberPicker::class.java.getDeclaredField("mInputText").apply { isAccessible = true }.get(this) as EditText).filters = emptyArray()
}
MaterialAlertDialogBuilder(context)
.setTitle(title)
.setView(numberPicker)
.setPositiveButton("OK") { _, _ -> valueChooseAction(numberPicker.value.toDouble() * stepSize) }
.setNeutralButton("Cancel") { _, _ -> /* do nothing, closes dialog automatically */ }
.show()
}然后您可以像这样使用:
showNumberPickerDialog(
title = "Your Weight",
value = 75.0, // in kilograms
range = 10.0 .. 300.0,
formatToString = { "$it kg" },
valueChooseAction = { saveNewWeight(it) }
)https://stackoverflow.com/questions/18464571
复制相似问题