如何使 NumberPicker 不再重复

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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);

显然顺序很重要。

【讨论】:

以上是关于如何使 NumberPicker 不再重复的主要内容,如果未能解决你的问题,请参考以下文章

如何从 BaseAdapter 中的 NumberPicker 设置 OnValueChangedListener

如何使用 NumberPicker 小部件 Android 4.0

Android的NumberPicker那两天蓝色的线如何更换颜色

安卓 如何在点击一个按钮弹出的对话框中加入NumberPicker 并且将它的值显示在屏幕上

将 Android NumberPicker 限制为用于数字输入的数字键盘(不是 Alpha 键盘)

如何用动画改变 NumberPicker 的值?