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

我正在开发一个Android应用程序。 里面的某个地方,我正在显示NumberPicker部件。

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

我的意思是,我使用了一个数字select器,最小值为0,最大值为9999。看起来像这样,

号码选择器

通过这种方式,用户可以快速地将小部件从0跳到9999。我不想要这种行为。 现在的数字select器小部件看起来像一个封闭的圆圈,我想知道如何将最小值和最大值之间的圆精确分开,以便从最小值和最大值看起来像这样:

号码选取器最小值号码选择器的最大值

我怎样才能做到这一点?

我曾经尝试过:

  • 我在NumberPicker API的每个地方都进行了search,看起来这不是一个可以简单地使用方法设置的东西。
  • 我认为我可以使用方法setDisplayedValues(String[] displayedValues)方法在最小值之前和最大值之后添加空string,以便在最小值之前或最大值之后没有显示值, 用户将仍然能够通过他们或WORSE:select空值。

有任何想法吗? 我将不得不把我的手弄脏,并挖掘小部件的实施? 触摸监听器里面也许?

Solutions Collecting From Web of "在NumberPicker中的最小值和最大值之间的块转换"

您必须在号码选取器上调用setWrapSelectorWheel(false) 。 在调用setWrapSelectorWheel(false) 之前 ,要小心setMinimumValue(...)setMaximumValue(...) setWrapSelectorWheel(false) 。 如果你不这样做,这根本就行不通。

像我一样,你可能正在寻找一种方法来通过XML来做到这一点,但是当时没有办法。

不是这个setWrapSelectorWheel(false) ( 从API )?

正如所指出的那样,setWrapSelectorWheel(false)会诀窍,所以提供的答案之一应该被接受。

一般来说,这个调用的顺序是:

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