我正在开发一个 Android 应用程序。在里面的某个地方,我正在显示
NumberPicker
小部件。
如何禁用最小值和最大值之间的转换?
我的意思是,我正在使用数字选择器,最小值为 0,最大值为 9999。看起来像这样,
这样,用户就可以快速滑动小部件从0跳转到9999。 我不想要这种行为。现在的数字选择器小部件看起来像一个闭合的圆圈,我试图看看如何在最小值和最大值之间精确地打破圆圈,以便从最小值和最大值看起来像这样:
我怎样才能实现这个目标?
我尝试过的:
NumberPicker
API 里找遍了,这似乎不是可以用方法简单设置的东西。setDisplayedValues(String[] displayedValues)
的方法在最小值之前和最大值之后添加空字符串,这样最小值之前或最大值之后就不会显示任何值,BUT用户仍然会能够跳过它们,或者更糟糕:选择空值。有什么想法吗?我是否必须亲自动手并深入研究小部件的实现?也许在触摸监听器内部?
您必须在号码选择器上拨打
setWrapSelectorWheel(false)
。
请务必小心,在拨打
setMinimumValue(...)
之前setMaximumValue(...)
和 setWrapSelectorWheel(false)
。如果你不这样做,它根本就行不通。
像我一样,您可能正在寻找一种通过 xml 来完成此操作的方法,但目前没有办法。
正如所指出的,setWrapSelectorWheel(false) 可以解决问题,因此应该接受所提供的答案之一。
一般来说,这种调用顺序是有效的:
picker.setMinValue(0);
picker.setMaxValue(stringValuesArray.length - 1);
picker.setDisplayedValues(stringValuesArray);
picker.setValue(defaultValue);
picker.setWrapSelectorWheel(false);