実践
activity_main.xml
<RatingBar
android:id="@+id/rating_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
xml側はそのままRatingBarとして設定できます。
以下は 使えるメソッドを紹介します。
val ratingBar : RatingBar = findViewById(R.id.rating_bar)
変数に設定した上で
numStars
評価の最大数を決めることができます。
ratingBar.numStars = 6
とすると評価の最大数を設定できます。
初期値は5が設定されているようです。
xml側では
android:numStars="100"
ここを設定する時の注意点として、Viewの横幅が評価の最大数が入りきらない場合はその分しか表示できません。
例えば、星二つ分の Viewサイズの場合は星二つまでしか表示されません。
逆にViewは横幅いっぱいにしていても、100など大きすぎる数を入れた所星の数が表示しきれなくなってしまいました。
Indicator
評価バーをユーザーが変更できるかどうかを設定できます。
ratingBar.setIsIndicator(true)
xml側では
android:isIndicator="true"
trueがユーザーが変更不可、falseが変更可能
また、現在が変更できる状態なのか否かもわかります。
ratingBar.isIndicator
rating
評価の初期状態を決めることができます。
ratingBar.rating = 1.5F
型はFloatで指定します。
また、小数点第一まで指定することができます。
xml側では
android:rating="1"
stepSize
評価の段階を設定できます。
ratingBar.stepSize = 1.2F
このように小数点でも指定できます。
1段階で1.2分動きます。
xml側では
android:stepSize="1.2"
setOnRatingBarChangeListener
評価の変更を検出することもできます。
ratingBar.setOnRatingBarChangeListener()
progressTintList
星の色の指定ができます。
ratingBar.progressTintList = ColorStateList.valueOf(Color.BLACK)
デフォルトでは黄色っぽい色が設定されています。
参考