【问题标题】:Block transition between minimum value and maximum value in NumberPickerNumberPicker 中最小值和最大值之间的块转换
【发布时间】:2013-03-19 00:15:30
【问题描述】:

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

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

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

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

我怎样才能做到这一点?

我尝试过的:

  • 我在NumberPicker API 中到处搜索,这似乎不是一个可以简单地使用方法设置的东西。
  • 我觉得可以用setDisplayedValues(String[] displayedValues)的方法在最小值之前和最大值之后添加空字符串,这样在最小值之前或者最大值之后都不显示值,但是 用户仍然可以跳过它们,或者更糟糕的是:选择空值。

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

【问题讨论】:

    标签: android numberpicker


    【解决方案1】:

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

    【讨论】:

    • 这有什么问题?如果将其设置为false,则不能从最小值变为最大值,反之亦然。
    • 这是解决方案,只需确保在初始化选择器值之后调用 setWrapSelectorWheel(false) 方法即可。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-17
        • 2015-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-01
        • 1970-01-01
        相关资源
        最近更新 更多