レーティングバーの星の色を設定するにはどうすればよいですか?黄色い星が欲しい。
最も簡単な方法:
Android:progressTint="@color/color"
滑らかで光沢があります。
これは私のために働きました:
Drawable drawable = ratingBar.getProgressDrawable();
drawable.setColorFilter(Color.parseColor("#FFFDEC00"), PorterDuff.Mode.SRC_ATOP);
ProgressTintを設定するだけでは完全なソリューションではないことがわかりました。 stepSizeが1未満の場合、スターの色は変わりますが、スターの塗りつぶしの部分は変わりません。私の経験では、デフォルトのスターの色合いが醜い頭を育てるのを防ぐために、secondaryProgressTintも設定する必要があります。これが私のコードです:
Android:progressTint="@color/accent"
Android:secondaryProgressTint="@Android:color/transparent"
これが私の状況で誰かを助けることを願っています。
次のような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" />
独自のドローアブルを使用していますか?
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"/>
評価バーは、タッチスターの色を変更するために、実行時に自動的に使用されます。
最初に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"/>
言及されたブログでは少し複雑ですが、私は似ていますがより単純な方法を使用しました。 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"/>
それでおしまい。
これを試して
RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingBar);
LayerDrawable stars = (LayerDrawable) ratingBar.getProgressDrawable();
stars.getDrawable(2).setColorFilter(Color.YELLOW,PorterDuff.Mode.SRC_ATOP);
私がそれをしたとき、私も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以降のみ
<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>