使用setNumStars在执行期间更改星标的Android会使评级变得奇怪

使用setNumStars在执行期间更改星标的Android会使评级变得奇怪,第1张

概述我正在使用rb.setNumStars(int)将星形从给定的默认值(比如5)更改为具有app首选项的新星(例如4).代码执行Ok,刷新片段后,我可以看到星号的变化为我设置的任何整数(条形的StepSize为1).问题在于,当我尝试在该条上设置评级时,填充的星星与评级值不一致,我必须在陌生的地方触摸以获得

我正在使用rb.setNumStars(int)将星形从给定的默认值(比如5)更改为具有app首选项的新星(例如4).代码执行Ok,刷新片段后,我可以看到星号的变化为我设置的任何整数(条形的StepSize为1).

问题在于,当我尝试在该条上设置评级时,填充的星星与评级值不一致,我必须在陌生的地方触摸以获得值,即如果我触摸第一个星,我得到一个rating = 1,如果我触摸第二个,我仍然有一个等级= 1,填充的星是一个和第二个的片段.如果我在第二颗星和第三颗星之间触摸,我得到等级= 2,我得到两颗星星和碎片.

想象一下:如果F是一个完整的星,P是部分(但不是半星),E是空星,如果我触摸第二个星,在第2个和第3个星之间我得到:

F P E E额定值= 1 F F P E额定值= 2

编辑:图像可以在这里找到:http://1drv.ms/1pyq3gS

如果我将值返回到5,则条形按预期运行,填充的星形与评级一致.

我无法插入图像来解释这种行为,但我希望它足够清楚.

有谁知道为什么会发生这种情况以及如何纠正它?

解决方法:

似乎我能够回答我自己的问题.

由于这是进度条的扩展,我猜测当我改变星数时,进度条会拉伸到新的宽度,但保持原始值,而不是反映必须填充的部分.通过使用setMax作为评级栏,我想我正在设置此栏的新限制,因此,我更改了星号并将最大值设置为该数字,如下所示:

ratingbar rb = (ratingbar) vIEw.findVIEwByID(rbars[r]);rb.setNumStars(Integer.valueOf(SP.getString(rchars[r], "3")));rb.setMax(Integer.valueOf(SP.getString(rchars[r],"3")));rb.setrating(2);

通过这种方式,评级与填充的星星重合.

总结

以上是内存溢出为你收集整理的使用setNumStars在执行期间更改星标的Android会使评级变得奇怪全部内容,希望文章能够帮你解决使用setNumStars在执行期间更改星标的Android会使评级变得奇怪所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存