Android Studio/ReviewMate
[Android Studio/Kotlin]RatingBar사용법
kangchaewon
2023. 12. 6. 01:05
Layout.xml
<RatingBar
android:id="@+id/movieRate"
android:rating="2.0"
style="@style/Widget.AppCompat.RatingBar.Indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:isIndicator="false"
android:progressTint="@color/navigation_color_habit"
android:numStars="5"
android:scaleX="1"
android:scaleY="1"
android:stepSize="0.5" />
style : 별점의 크기를 조절
- 기본

- style="@style/Widget.AppCompat.RatingBar.small"

- style="@style/Widget.AppCompat.RatingBar.Small"

rating : 초기 별점 갯수
layout : layout은 match로 설정 시 내가 설정한 별점개수로 정해지지 않고 layout크기에 맞춰 별점수가 조절됨 ⇒ wrap_content로 사용 권장
isIndicator : 사용자가 별점 수정 가능 or 불가능
- false : 설정 가능
- true : 설정 불가능
- 기본값 : false
progressTint : 별점의 색 설정
numStars : 별점의 갯수 설정
stepSize : 클릭 시 변경 단위 설정
!! progressTint 설정을 하지 않으면 수정이 안 된 것처럼 보임!!
Activity.kt
lateinit var ratingbar : RatingBar
//...
ratingbar.setOnRatingBarChangeListener{ratingbar, rating, fromUser->
ratingbar.rating=rating
userRateStr = ratingbar.rating.toString()
}
문제점 : default값을 사용하면 오류가 생김
해결 : listener밖에 사용.. userRateStr값이 초기화 되지 않아서 생기는 문제점이었음. listener가 사용되지 않으면 초기화가 되지 않았던 것
ratingbar = binding.movieRate
ratingbar.setOnRatingBarChangeListener { _, rating, _ ->
ratingbar.rating = rating
}
userRateStr = ratingbar.rating.toString()
setOnRatingBarChangeListener 설정
// 기본 형태
fun onRatingChanged(ratingbar: RatingBar, rating: Float, fromUser: Boolean) {}
// 람다식
ratingbar.setOnRatingBarChangeListener{ratingbar, rating, fromUser-> /*코드*/ }
- parameters
- ratingbar : 사용할 ratingbar
- rating : 사용자가 변경한 별점 개수(Float)
- fromUser : 사용자가 변경한 값이면 true, 코드를 통해 변경 된 값이면 false
- 설정 된 rating을 문자열로 변환
- rating.toString()