<RatingBar
android:id="@+id/score1"
style="@style/rating_bar_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:gravity="center_vertical"
android:numStars="5"
android:rating="5.0" />
rating_bar_style
<style name="rating_bar_style" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/rating_bar</item>
<item name="android:minHeight">20dip</item>
<item name="android:maxHeight">24dip</item>
</style>
rating_bar
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--主背景-->
<item
android:id="@android:id/background"
android:drawable="@drawable/grey_start" />
<!--副进度条-->
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/grey_start" />
<!--主进度条-->
<item
android:id="@android:id/progress"
android:drawable="@drawable/cp_start" />
</layer-list>
grey_start 是未选中图片,
cp_start是选中图片
会出现下面的问题
解决代码:
//1,获取图片的高度
Bitmap bmp = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.cp_start);
int starsImgHeight = bmp.getHeight();
//2,将获取的图片高度设置给RatingBar
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)viewHolder.rating_bar.getLayoutParams();
lp.width = RelativeLayout.LayoutParams.WRAP_CONTENT;
lp.height =starsImgHeight;
viewHolder.rating_bar.setLayoutParams(lp);
如果只是展示,要设置下面属性
试了 Android:clickable=”false”
android:focusable=”false”
android:focusableInTouchMode=”false”都不行。。
最好的解决方法是:
加这个属性,android:isIndicator=”true”