在NumberPicker中阻止最小值和最大值之间的转换

时间:2013-03-28 14:01:39

标签: android numberpicker

我正在开发Android应用程序。在某处,我正在显示NumberPicker小部件。

如何禁用最小值和最大值之间的转换?

我的意思是,我使用数字选择器,最小值为0,最大值为9999.看起来像这样,

number picker

通过这种方式,用户可以快速将小部件从0跳转到9999。 我不想要这种行为。数字选择器小部件现在看起来像一个封闭的圆圈,我试图看看如何在最小值和最大值之间准确地打破圆圈,以便它从最小值和最大值看起来像这样:

number picker minimum value number picker maximum value

我怎样才能做到这一点?

我尝试过:

  • 我在NumberPicker API的所有地方进行了搜索,看起来这似乎不是人们可以使用方法设置的。
  • 我认为我可以使用方法setDisplayedValues(String[] displayedValues)方法在最小值之前和最大值之后添加空字符串,以便在最小值之前或最大值之后不显示任何值,但是用户仍然可以通过它们或WORSE:选择空值。

有什么想法吗?我是否必须弄脏手,并深入了解小部件实现?触摸听众内部可能吗?

3 个答案:

答案 0 :(得分:10)

您必须在号码选择器上拨打setWrapSelectorWheel(false)。在对<{1}}进行调用之前,请注意setMinimumValue(...)setMaximumValue(...) 。如果不这样做,它就行不通。

像我一样,你可能正在寻找一种通过xml实现这一目标的方法,但当时没办法。

答案 1 :(得分:5)

这不是setWrapSelectorWheel(false)from the API)吗?

答案 2 :(得分:2)

正如所指出的,setWrapSelectorWheel(false)可以解决问题,因此应该接受其中一个提供的答案。

通常,此调用顺序有效:

picker.setMinValue(0);
picker.setMaxValue(stringValuesArray.length - 1);
picker.setDisplayedValues(stringValuesArray);
picker.setValue(defaultValue);
picker.setWrapSelectorWheel(false);