Android RatingBar – 一团糟

我知道这听起来很不错,但感觉就像Android的UI组件和行为有时候会不合时宜。

请考虑以下XML:

   

屏幕截图显示了不同设备尺寸的外观:

Nexus S评级栏 Nexus S评级栏

平板电脑评级栏 平板电脑评级栏

小型设备评级栏 小型设备评级栏

虽然它只在预览工具中,但我可以确认它实际上是在设备上看起来的样子。

小型设备的行为令人抓狂。 指定5颗星的RatingBar如何仅显示3,为什么不缩小星星以适应窗口?

考虑到wrap_content宽度是问题,我切换到layout_width =“fill_parent”并且没有改变小设备上的外观,但它完全搞砸了Tablets(对于“numStars”为5)这么多:

平板电脑的fill_parent为宽度

我的问题是,有没有办法在尺寸方面为RatingBar获得正确的行为? 您会认为numStars或max足够,但它完全是任意的。 当RatingBar被拉伸以便它绘制更多的星星时,它会增加星星并看到如何以3的进度,它根据显示的星数绘制它? 坚持使用numStars是没有意义的!

如果没有办法从RatingBar获得逻辑性能,是否有任何替代方案,包括第三方小部件? 如果没有,我想我总是可以绘制5个ImageViews,并且只是对它进行相应的操作。

(请记住,布局中只有一个RatingBar会显示所有这些行为 – 忘记尝试使用其他小部件/组件resize,或者使用自己的样式。我知道它已经完成,但为什么这是默认行为?)

当我使用股票评级栏时,我的感觉和你一样,所以我自己做了: SimpleRatingBar 。

它的特点是:

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

这是预览 。

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

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

我希望它有用。