11

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

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

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

号码选择器

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

数字选择器最小值 数字选择器最大值

我怎样才能做到这一点?

我尝试过的:

  • 我在NumberPickerAPI 中到处搜索,这似乎不是一个可以简单地使用方法设置的东西。
  • 我认为我可以使用方法setDisplayedValues(String[] displayedValues)方法在最小值之前和最大值之后添加空字符串,以便在最小值之前或最大值之后不显示任何值,用户仍然可以跳过它们或 WORSE:选择空值。

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

4

3 回答 3

12

您必须调用setWrapSelectorWheel(false)号码选择器。调用. setMinimumValue(...)_ _ 如果你不这样做,它根本就行不通。setMaximumValue(...) setWrapSelectorWheel(false)

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

于 2014-01-11T17:59:37.137 回答
5

这不是setWrapSelectorWheel(false)来自API)吗?

于 2013-06-25T10:01:10.597 回答
2

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

通常,这种调用顺序有效:

picker.setMinValue(0);
picker.setMaxValue(stringValuesArray.length - 1);
picker.setDisplayedValues(stringValuesArray);
picker.setValue(defaultValue);
picker.setWrapSelectorWheel(false);
于 2014-08-29T12:01:24.957 回答