首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改NumberPicker滚动速度

更改NumberPicker滚动速度
EN

Stack Overflow用户
提问于 2018-07-18 21:19:03
回答 3查看 1.4K关注 0票数 1

真不敢相信我还没有找到一个关于这个的应答堆栈溢出帖子...

我正在制作一个计时器,您可以从NumberPicker小部件中选择时间。问题是,需要10-13个卷轴才能到达底部

我看了文档,但什么也没找到

代码语言:javascript
复制
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);
EN

回答 3

Stack Overflow用户

发布于 2018-08-28 02:31:32

我的ScrollPicker库在这里可能会有帮助,但不幸的是它不能有‘选择器滚轮’‘包装’,所以列表没有循环显示。

虽然你不能从代码中设置滚动速度,但你不必这样做,因为你可以在一次滑动中到达这60个项目的末尾。这就是为什么我认为它仍然适合你的原因。你可以通过你滑动的速度来控制你的滑动速度。

下面是你要做的:

  1. 使用ScrollPicker,而不是使用setItems(..)在代码中使用您的集合。不需要setMinValue、setMaxValue或转换为字符串,只需设置您的int集合即可。
票数 0
EN

Stack Overflow用户

发布于 2018-08-29 02:19:49

我也找不到解决这个问题的办法,但我只是想澄清一下为什么

代码语言:javascript
复制
mSecondsPicker.setOnLongPressUpdateInterval(8000);

并不像你所期望的那样工作。此方法的description是“设置当分别长按向上和向下按钮时数字递增和递减的速度”。这意味着,当你按住向上和向下按钮时,它只会影响滚动速度,而不是控制滑动速度。我相信默认NumberPicker的“向上”和“向下”按钮是在NumberPicker中突出显示或选择的数字上方和下方的数字。

票数 0
EN

Stack Overflow用户

发布于 2018-08-29 02:30:18

在默认的NumberPicker小部件中没有访问摩擦级别的公共方法。

您可以使用此自定义NumberPickerView。英文安装说明为here

它完全按照你想要的方法来控制摩擦力水平:

代码语言:javascript
复制
//double the default scroll friction level
mNumberPickerView.setFriction(2 * ViewConfiguration.get(mContext).getScrollFriction());

默认滚动摩擦力值为0.015f,可在here

中找到

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51403083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档