Android修改原生RatingBar颜色、大小,以及自定义的样式

一,颜色

用过RatingBar的都知道,这玩意比较坑,不好调整大小,颜色.

这里给出修改颜色的方法

style.xml中添加style


    

然后给RatingBar添加属性

android:theme="@style/RatingBar"
这样就实现了自定义颜色.


PS:网上有另一种方法添加属性

android:progressTint="@color/orange_main_color"
这种方法其实是有问题的,会在星星的左边有阴影.细心的测试是不会放过这一点的.


二,大小

大小也不好控制,最简单的是通过系统提供的两个style来控制

?android:attr/ratingBarStyleIndicator和?android:attr/ratingBarStyleSmall

但是这样也并不能达到我们想要的效果

三,自定义样式

1,准备两个图标资源

stars_bright    stars_gray

2,新建drawable



    
    
    

3,定义一个style

    

4,使用

到此还没有完成,此时图片显示是有问题的,如下

Android修改原生RatingBar颜色、大小,以及自定义的样式_第1张图片

5,解决上面的问题

//1,获取图片的高度
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.stars_bright);
starsImgHeight = bmp.getHeight();

//2,将获取的图片高度设置给RatingBar
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)ratingBar.getLayoutParams();
lp.width = LinearLayout.LayoutParams.WRAP_CONTENT;
lp.height =starsImgHeight;
ratingBar.setLayoutParams(lp);

也就是先获取图片资源的高度,然后取ratingBar的LayoutParams,对其设置高度,然后再set给ratingBar。

效果如下:







你可能感兴趣的:(android)