1. 程式人生 > >Android RatingBar 評價欄 星星 大小 樣式 設定

Android RatingBar 評價欄 星星 大小 樣式 設定

Android系統自帶RatingBar,無法直接指定寬高,不然會出現無法全部顯示的情況,使用系統自帶的兩個主題
?android:attr/ratingBarStyleIndicator


?android:attr/ratingBarStyleSmall

也只能做到固定小版或者大版。

按照以下幾個步驟 可以做到自控ratingbar 寬高。


第一步 準備選中何為選中的兩種星星,大小相同。

Step-1. You need your own rating stars in res/drawable ...

A full star

Empty star


第二部 為星星定義選中與非選中狀態

Step-2 In res/drawable you need ratingstars.xml as follow ...

<?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/star_empty" />
    <item android:id="@android:id/secondaryProgress"
          android:drawable="@drawable/star_empty" />
    <item android:id="@android:id/progress"
          android:drawable="@drawable/star" />
</layer-list>


第三步,為Ratingbar設定style,此處開始正式指定高度。

Step-3 In res/values you need styles.xml as follow ...

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="foodRatingBar" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/ratingstars</item>
        <item name="android:minHeight">22dip</item>
        <item name="android:maxHeight">22dip</item>
    </style>
</resources>

第四部,就可以直接使用了

Step-4 In your layout ...

<RatingBar
      android:id="@+id/rtbProductRating"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:numStars="5"
      android:rating="3.5"
      android:isIndicator="false"
      style="@style/foodRatingBar"    
/>