【问题标题】:How to make NumberPicker non-recurring如何使 NumberPicker 不再重复
【发布时间】:2012-11-13 06:16:56
【问题描述】:

是否有任何属性可以告诉(标准)NumberPicker 在其最后一个值之后停止? 例如。如果我的 MinValue 为 0 而我的 MaxValue 为 5,NumberPicker 只会在 5 之后重复,这样用户就可以无休止地滚动。

【问题讨论】:

    标签: android repeat recurring numberpicker


    【解决方案1】:

    如果你设置了最小值/最大值,试试这个:

    yourNumberPicker.setWrapSelectorWheel(false);
    

    这对你有用吗?

    编辑

    对于时间选择器:

    timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
       public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
         if(hourOfDay>max) {
           TimePicker.setHour(max):
         }
         updateDisplay(hourOfDay, minute);
       }
    });
    

    这不是经过测试的代码,但这可能是您可以执行此操作的方式。

    【讨论】:

    • 它就像一个魅力。正是我想要的,非常感谢 Opiatefuchs!
    • 您不会碰巧知道 TimePicker 的等效项吗?
    • 对于 TimePicker,这是不可能的。有不同的方法可以做到这一点。例如,你可以做你自己的 TimePicker。或者,更简单的方法,将 TimePicker 设置为 OnTimeChangedListener,每次达到最大值时,使用 setCurrentMinute/setCurrentHour 方法并设置最小值/最大值。稍后我试着给你举个例子,但现在我得赶紧上班了。
    • 查看我的编辑...它未经测试,但它可以以类似的方式工作
    • 关于NumberPicker.setWrapSelectorWheel(boolean) 需要注意的一点 - 系统根据值的范围决定是否换行,因此应该在 设置 min/ 之后调用此方法最大值。
    【解决方案2】:

    这个Answer帮助了我:

    public void updatePickerValues(String[] newValues){
      picker.setDisplayedValues(null);
      picker.setMinValue(0);
      picker.setMaxValue(newValues.length -1);
      picker.setWrapSelectorWheel(false);
      picker.setDisplayedValues(newValues);
    }
    

    显然顺序很重要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2020-08-28
      • 1970-01-01
      相关资源
      最近更新 更多