web-dev-qa-db-ja.com

レーティングバーの星の色を設定するにはどうすればよいですか?

レーティングバーの星の色を設定するにはどうすればよいですか?黄色い星が欲しい。

18
Finn Su

最も簡単な方法:

Android:progressTint="@color/color"

滑らかで光沢があります。

15
MiguelCatalan

これは私のために働きました:

    Drawable drawable = ratingBar.getProgressDrawable();
    drawable.setColorFilter(Color.parseColor("#FFFDEC00"), PorterDuff.Mode.SRC_ATOP);
11
Chad Bingham

ProgressTintを設定するだけでは完全なソリューションではないことがわかりました。 stepSizeが1未満の場合、スターの色は変わりますが、スターの塗りつぶしの部分は変わりません。私の経験では、デフォルトのスターの色合いが醜い頭を育てるのを防ぐために、secondaryProgressTintも設定する必要があります。これが私のコードです:

Android:progressTint="@color/accent"
Android:secondaryProgressTint="@Android:color/transparent"

これが私の状況で誰かを助けることを願っています。

9
Franklin Kesler

次のような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/star_empty_show"/>

    <item
    Android:id="@Android:id/secondaryProgress"
    Android:drawable="@drawable/star_empty_show"/>

    <item
    Android:id="@Android:id/progress"
    Android:drawable="@drawable/star_filled_show"/>

</layer-list>

あなたのxmlでそれを呼び出す

<RatingBar
        Android:id="@id/rate"
        style="?android:attr/ratingBarStyleSmall"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_marginRight="5.0dip"
        Android:isIndicator="true"
        Android:max="5"
        Android:numStars="5"
        Android:progressDrawable="@drawable/ratebar_theme"
        Android:stepSize="0.1" />

独自のドローアブルを使用していますか?

6
kwishnu

3つのスター画像(star_filled_show.png、star_half_show.png、star_empty_show.png)と1つのxmlが必要です。

これら3つの画像をres/drawable

次のratingbarstars.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/star_empty_show"/>

<item
Android:id="@Android:id/secondaryProgress"
Android:drawable="@drawable/star_half_show"/>

<item
Android:id="@Android:id/progress"
Android:drawable="@drawable/star_filled_show"/>
</layer-list>

評価バーの定義にこのドローアブルを使用するように伝えます

<RatingBar Android:progressDrawable="@drawable/ratingbarstars.xml"/>
4
OrchTech

評価バーは、タッチスターの色を変更するために、実行時に自動的に使用されます。

最初にapp\src\main\res\values\styles.xmlファイルにスタイルを追加します。

<style name="RatingBar" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/duskYellow</item>
<item name="colorControlActivated">@color/lightGrey</item></style>

次に、評価バーに次のようなテーマを追加します。

<RatingBar
Android:id="@+id/rating"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:numStars="5"
Android:stepSize="1"
Android:theme="@style/RatingBar"/>
2
Navadip Patel

言及されたブログでは少し複雑ですが、私は似ていますがより単純な方法を使用しました。 3つの星の画像(red_star_full.png、red_star_half.png、red_star_empty.png)と1つのxmlが必要です。

これら3つの画像をres/drawableに配置します。

そこに次のratingbar_red.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/red_star_empty" />
    <item Android:id="@Android:id/secondaryProgress" Android:drawable="@drawable/red_star_half" />
    <item Android:id="@Android:id/progress" Android:drawable="@drawable/red_star_full" />
</layer-list>

最後に、これを使用するように評価バーの定義を伝えます。

<RatingBar Android:progressDrawable="@drawable/ratingbar_red"/>

それでおしまい。

1
Suneel Kumar

これを試して

RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar);
LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable();
stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP);
1
Anand Savjani

私がそれをしたとき、私もTintModeを置かなければなりませんでした。

<RatingBar
        Android:progressTint="@color/colorAccent"
        Android:progressTintMode="src_atop" ---- This is important!
        Android:secondaryProgressTint="@color/colorPrimary"
        Android:secondaryProgressTintMode="src_atop" ---- This is important!
        Android:progressBackgroundTint="@color/black_alpha"/>

aPIバージョン21以降のみ

1
<RatingBar
        Android:id="@+id/rating"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:theme="@style/RatingBar"/>

スタイルをテーマに

<style name="RatingBar" parent="Theme.AppCompat">
<item name="colorControlNormal">@color/gray</item>
<item name="colorControlActivated">@color/yellow</item>
0
Tony Augustine