Android RatingBar对某些设备有“坏”阈值,修复?

我有一个RatingBar的标准实现。 5星,1步长。

  

我注意到我在某些设备或品牌上遇到了问题:三星,Nexus,或许更多…但我在索尼和LG设备上没有问题,也许在这里也有更多问题。

问题是选择值时的精度非常差。 似乎如果我通过评级中间的抽奖,它将填补以下“明星”。 它似乎是这些设备的门槛,而这正是它的方式。 LG和索尼的行为方式是,当你通过两个“星星”之间一半的距离时,它就会填满下一个星星。

那么,有什么办法可以防止这种情况发生吗?

据我所知,没有办法绕过它。

我是一个库的创建者,它提供了Android的默认RatingBar: SimpleRatingBar的替代品,我们在一个问题中讨论过这种行为。

在库中,我们修改了这种行为,因此只有在按下至少1/4的情况下才会选择一个星号。 我相信这可以改善使用它时的整体体验。

如果你愿意,你可以尝试一下。 它的特点是:

  • 完全工作的android:layout_width :它可以设置为wrap_contentmatch_parent或abritary dp。
  • 任意数量的星星。
  • 任意步长。
  • 可以精确控制恒星的大小,也可以通过设置最大尺寸。
  • 正常状态下的可定制颜色(星形和额定条的边框,填充和背景)。
  • 压制状态下的可定制颜色(星形和额定条的边框,填充和背景)。
  • 恒星之间可定制的尺寸分离。
  • 可定制的星星边框宽度。
  • 可定制的星角半径。
  • 允许设置OnRatingBarChangeListener
  • 星星填充可以设置为从左到右或从右到左(RTL语言支持)。
  • AnimationBuilder集成在视图中,以animation方式编程设置评级。

这是预览

您可以在jcenterMaven Centralfind它。 因此,在build.gradle文件中,只需添加到依赖项:

compile 'com.iarcuschin:simpleratingbar:0.1.+'

我希望它有用。