简直不敢相信我还没有找到关于此问题的已解决的Stack Overflow帖子...
我正在制作一个计时器,您可以在其中从NumberPicker小部件中选择时间。问题在于,滚动到底部需要10到13张纸卷
我查看了文档,但是没有找到任何东西
String[] minsecvalues = new String[61];
for(int i=0; i < minsecvalues.length; i++){
minsecvalues[i] = Integer.toString(i);
}
NumberPicker mSecondsPicker = (NumberPicker) v.findViewById(R.id.np_seconds_picker);
mSecondsPicker.setMaxValue(60);
mSecondsPicker.setMinValue(0);
mSecondsPicker.setWrapSelectorWheel(true);
mSecondsPicker.setDisplayedValues(minsecvalues);
//supposed to change scroll speed but doesn't work
mSecondsPicker.setOnLongPressUpdateInterval(8000);
//This method looks promising but my app crashes when I run it
//mSecondsPicker.scrollBy(0, 20);
答案 0 :(得分:0)
我的ScrollPicker库在这里可能会有所帮助,但不幸的是,它没有“选择器”“包装”,因此无法循环显示列表。
虽然您无法通过代码设置滚动速度,但是不必这样做,因为您可以通过一次滑动即可到达这60个项目的末尾。这就是为什么我认为它仍然可能适合您的原因。您可以通过滑动速度来控制滑动速度。
这就是您要做的:
1.使用ScrollPicker代替NumberPicker
2.使用setItems(..)在代码中设置您的Collection。无需设置setMinValue,setMaxValue或转换为String,只需设置您的int集合即可。
答案 1 :(得分:0)
我也无法为此找到解决方案,但我只是想澄清原因
mSecondsPicker.setOnLongPressUpdateInterval(8000);
不能按照您期望的方式工作。此方法的description是“设置分别长按向上和向下按钮时数字递增和递减的速度”。这意味着,当您按住向上和向下按钮时,仅控制滚动速度,而不是控制滑动速度。我相信默认NumberPicker的“向上和向下”按钮是NumberPicker中突出显示或选定的数字上方和下方的数字。
答案 2 :(得分:0)
默认的NumberPicker
小部件中没有公开的方式来访问摩擦级别。
您可以使用此自定义NumberPickerView。 英文安装说明为here。
它完全可以按照下面的方法来控制摩擦水平:
//double the default scroll friction level
mNumberPickerView.setFriction(2 * ViewConfiguration.get(mContext).getScrollFriction());
默认滚动摩擦值为0.015f,可以找到here