Lollipop端末でRatingBarの色が灰色になる問題の修正方法
今やLollipopのサポートをしているアプリが少なくなってきているとは思いますが。 以前、LollipopだけRatingBarの色がうまくコントロールできないことがあったのでメモです。
問題が発生していた実装
ごく普通にこのようなレイアウトを組んでいたのですが、Lollipopとそれ以外の端末で見え方が異なりました。Android 5.0.2だとタップしてる時は想定通りの色になっているのですが、指を離すと灰色で塗りつぶされてしまいます。同じコードで、Android 10ではタップ時もタップ後もピンクになっています。
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
| Android 5.0.2 | Android 10 |
|---|---|
![]() |
![]() |
修正
RatingBar Theme working in Marshmallow but not in Lollipopという記事を見つけて、以下のようにしてみたものの、タップ中の色や、Android 10のグレーの濃さが想定通りでなく(style指定を外しても同様)。
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:progressTint="@color/ratingBarProgressTint"
android:progressBackgroundTint="@color/ratingBarBackgroundTint"
android:secondaryProgressTint="@color/ratingBarBackgroundTint"
style="@style/RatingBar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<style name="RatingBar"> <item name="colorControlNormal">@color/ratingBarBackgroundTint</item> <item name="colorControlActivated">@color/ratingBarProgressTint</item> </style>
| Android 5.0.2 | Android 10 |
|---|---|
![]() |
![]() |
最終的に以下のようにしてみたら最初のAndroid 10の挙動と一致しました。
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:progressTint="@color/ratingBarProgressTint"
android:backgroundTint="@color/ratingBarBackgroundTint"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
| Android 5.0.2 | Android 10 |
|---|---|
![]() |
![]() |




