Android 使用 setNumStars 在执行过程中更改星星使收视率变得奇怪

2023-12-25

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

问题是,当我尝试在该栏上设置评级时,填充的星星与评级值不一致,并且我必须触摸奇怪的地方才能获得值,即,如果我触摸第一个星星,我会得到一个评级 = 1,如果我触摸第二个,我的评级仍然 = 1,并且填充的星星是一颗,也是第二个的碎片。如果我触摸第二颗和第三颗星星之间,我会得到评级 = 2,并且我会得到两颗和一个碎片填充的星星。

想象一下:如果 F 是一颗满星,P 是一个部分星(但不像半星)而 E 是一颗空星,如果我触摸第二颗星,并且在第二颗星和第三颗星之间我得到:

F P E E 等级 = 1 F F P E 等级 = 2

编辑:图像可以在这里找到:http://1drv.ms/1pyq3gS 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);

这样评级就与填充的星星一致了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 使用 setNumStars 在执行过程中更改星星使收视率变得奇怪 的相关文章

随机推荐