RatingBarの画像を変更してみる



今回はRatingbarの画像を変更してみます。



今作ってるアプリでRatingbarを使ってみようと思ったんですが、
表示される画像が機種によってまちまちなので、
自分で作った☆の画像を設定してみようと思います。

画像を作成

InkscapeとかGimpで適当に☆を作ります。
3パターン必要です。


  • ☆の設定されていない状態
  • ☆が半分設定された状態
  • ☆が完全に設定された状態



名前は適当にbtn01,btn02,btn03としておきます。


次にstyle.xmlとrating.xmlを作成します。

style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyRating" parent="@android:style/Widget.RatingBar">
        <item name="android:progressDrawable">@drawable/rating</item>
        <item name="android:minHeight">38dip</item>
        <item name="android:maxHeight">38dip</item>
        <item name="android:thumb">@null</item>
        <item name="android:isIndicator">true</item>
    </style>
</resources>


rating.xml
<?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/btn01" />
    <item android:id="@+android:id/secondaryProgress" 
        android:drawable="@drawable/btn02" />
    <item android:id="@+android:id/progress" 
        android:drawable="@drawable/btn03" />
</layer-list>



これらの画像とXMLをdrawableフォルダに入れておきます。
※drawableの全てのフォルダに入れるか、no-dpiに入れるかしないとエラーになるので注意が必要です。


実際に使ってみる
<RatingBar 
    android:numStars="5"
    android:stepSize="0.5"
    android:rating="1"
    android:layout_gravity="center_horizontal"
    style="@style/MyRating"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

style="@style/MyRating"とすることで、
オリジナルのスタイルを適用できます。



今回はこちらのサイトを参考にしました。
http://kozyr.zydako.net/2010/05/23/pretty-ratingbar/