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

问题描述 投票:0回答:3

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

NumberPicker
小部件。

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

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

number picker

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

number picker minimum value number picker maximum value

我怎样才能实现这个目标?

我尝试过的:

  • 我在
    NumberPicker
    API 里找遍了,这似乎不是可以用方法简单设置的东西。
  • 我想我可以使用方法
    setDisplayedValues(String[] displayedValues)
    的方法在最小值之前和最大值之后添加空字符串,这样最小值之前或最大值之后就不会显示任何值,BUT用户仍然会能够跳过它们,或者更糟糕:选择空值。

有什么想法吗?我是否必须亲自动手并深入研究小部件的实现?也许在触摸监听器内部?

android numberpicker
3个回答
14
投票

您必须在号码选择器上拨打

setWrapSelectorWheel(false)

请务必小心,在拨打

setMinimumValue(...)
之前
 
setMaximumValue(...)setWrapSelectorWheel(false)
 
。如果你不这样做,它根本就行不通。

像我一样,您可能正在寻找一种通过 xml 来完成此操作的方法,但目前没有办法。


6
投票

这不是

setWrapSelectorWheel(false)
来自API)吗?


2
投票

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

一般来说,这种调用顺序是有效的:

picker.setMinValue(0);
picker.setMaxValue(stringValuesArray.length - 1);
picker.setDisplayedValues(stringValuesArray);
picker.setValue(defaultValue);
picker.setWrapSelectorWheel(false);
© www.soinside.com 2019 - 2024. All rights reserved.