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中顯示點什么
}
};