如何调整ratingbar中星星的大小

实验室引进了zwatch做开发,其中一个比较大的问题就是如何对240*240的小屏幕做屏幕适应。今天做睡眠跟踪中的睡眠质量评级,引进了特别喜欢的ratingbar,结果评级star太大,导致星星越界,最后一个星星直接超出了屏幕外。网上大致搜了三种方法,只有一种还是比较符合胃口的,在这里做一个简单的总结。

一、属性值调整

android:maxWidth="30dp"
                     android:maxHeight="30dp"
                        android:soundEffectsEnabled="true" />


按说这应该是最容易想到的方法。但是很遗憾,安卓开发工程师并没有为我们考虑的那么细致,标红的这两个属性完全不是我们想象中的那样把star调小为对应的尺寸,这两个属性和大多数控件的属性意思一样,仅仅是ratingbar整体的大小。坑爹的是,如果ratingbar整体变小了,star宁肯丢失也不会跟随整体而放大或缩小。这一点我认为platform新版本应该顺应民意!很不自然的属性。

二、style调整

代码还是上面的那个代码,唯一区别是加一行属性:

style="?android:attr/ratingBarStyleSmall" 
这样做之后,星星真的变小了!看见星星变小的那一刻我tmd眼泪都出来了,这也忒小了吧!!
 
  
真是受不了,到手机上以后就是笔尖的大小。
三、自定义style
虽然耗费了一晚上完成这个实验,但是还是觉得学到了些东西。在尝试第三种方法之前,我看过了各种各样的帖子,都在询问怎么才能不自定义而后直接调用云云。很遗憾,一直找到最底层的platform的style,发现安卓只提供了StyleSmall和Style以及一个Indicator三种style,
 
  
style="?android:attr/ratingBarStyleSmall"
style="?android:attr/ratingBarStyle"
style="?android:attr/ratingBarStyleIndicator"
大小都不满意。最后决定还是使用最麻烦的方法。
 下面我就来讲讲如何制作自己的RatingBar样式。 
       1、在res/data/style.xml文件中定义种样式: