Android自定義RatingBar的顯示樣式

fydxdk 9年前發布 | 47K 次閱讀 Android Android開發 移動開發

      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);

private OnRatingBarChangeListener ratingBarListener = new OnRatingBarChangeListener() {

@Override
public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
//你要做的操作,比如在某個TextView中顯示點什么
}

};

 本文由用戶 fydxdk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!