Android自定义RatingBar的显示样式
RatingBar是我们在做项目时常用到的一个控件View,用来表示评价的指数。是五角星样式的,但自带的样式有时候在我们项目中显示不协调,我们就要自定义RatingBar的显示样式。
先还是在布局页面中写上控件:
<?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/my_need_evaluate_linearlayout_top"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal" >
  
          <TextView
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginLeft="10dp"
              android:layout_marginTop="28dp"
              android:text="请评分"
              android:textSize="22sp" />
  
              <RatingBar
                  android:id="@+id/my_evaluate_rabar"
                  style="@style/MyRatingBar"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" 
                android:layout_marginLeft="10dp"
                  android:isIndicator="false"
                  android:numStars="5"
                  android:rating="0"
                  android:stepSize="1.0" />
      </LinearLayout> 
是在哪改变其样式呢?就在布局中的 style="@style/MyRatingBar",这是我们自定义的一个style:
   <style name="MyRatingBar" parent="@android:style/Widget.RatingBar">
          <item name="android:progressDrawable">@drawable/my_evaluate_ratingbar_color</item>
          <item name="android:minHeight">20dip</item>
          <item name="android:maxHeight">20dip</item>
          <item name="android:minWidth">20dip</item>
      </style> 
在上面的style中用到的drawable/my_evaluate_ratingbar_color:
<?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/my_star_normal"/>//正常情况下样式
      <item
          android:id="@+android:id/secondaryProgress"
          android:drawable="@drawable/my_star_normal"/>
      <item
          android:id="@+android:id/progress"
          android:drawable="@drawable/my_star_select"/>//这就是我们选中的样式
  
  </layer-list>
  
诸如my_star_normal这样的图片是让UI切的图片。
在Activity中的使用就简单了:
private RatingBar mRatingBar; // 评价等级
  
mRatingBar = (RatingBar) findViewById(R.id.my_evaluate_rabar);
  
mRatingBar.setOnRatingBarChangeListener(ratingBarListener);
  
@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
//你要做的操作,比如在某个TextView中显示点什么
}
};