별 점을 조절할 수 있는 View이다.
주요 속성
numStars : 별의 개수를 설정한다.
stepSize : 별 점이 조절되는 양을 설정한다.
rating : 현재 별 점을 설정한다.
isIndicator : 별 점을 사용자가 조절 할 수 있는지 설정한다. true를 설정하면 사용자는 별 점을 조절 할 수 없다.
style : 스타일을 설정한다.
progressDrawable : 별의 이미지를 설정한다.
Customizing
별이 있을 때 이미지와 없을 때의 이미지를 준비한다.
drawable 폴더에 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_off"/>
<item
android:id="@android:id/secondaryProgress"
android:drawable="@drawable/star_off"/>
<item
android:id="@android:id/progress"
android:drawable="@drawable/star"/>
</layer-list>
주요 프로퍼티
rating : 별 점을 관리한다.
주요 이벤트
RatingBarChange : 별 점이 변경되었을 때
package com.example.ratingbar
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.RatingBar
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.activity_main.view.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
textView.text = "Rating 1 : ${ratingBar.rating}\n"
textView.append("Rating 2 : ${ratingBar2.rating}\n")
textView.append("Rating 3 : ${ratingBar3.rating}\n")
textView.append("Rating 4 : ${ratingBar4.rating}\n")
}
button2.setOnClickListener {
ratingBar.rating = 1.0f
ratingBar2.rating = 2.0f
ratingBar3.rating = 3.5f
ratingBar4.rating = 4.0f
}
ratingBar2.setOnRatingBarChangeListener(listener1)
ratingBar3.setOnRatingBarChangeListener(listener1)
ratingBar4.setOnRatingBarChangeListener { ratingBar, rating, fromUser ->
textView3.text = "Rating 4 : ${rating}\n"
if (fromUser == true) {
textView3.append("사용자에 의해 설정")
} else {
textView3.append("코드에 의해 설정")
}
}
}
val listener1 = object : RatingBar.OnRatingBarChangeListener{
override fun onRatingChanged(ratingBar: RatingBar?, rating: Float, fromUser: Boolean) {
when (ratingBar?.id) {
R.id.ratingBar2 ->{
textView.text = "Rating 2 : ${rating}\n"
if (fromUser == true) {
textView.append("사용자에 의해 설정")
} else {
textView.append("코드에 의해 설정")
}
}
R.id.ratingBar3 ->{
textView2.text = "Rating 3 : ${rating}\n"
if (fromUser == true) {
textView2.append("사용자에 의해 설정")
} else {
textView2.append("코드에 의해 설정")
}
}
}
}
}
}
'안드로이드 > Widget' 카테고리의 다른 글
안드로이드 CardView (0) | 2022.06.02 |
---|---|
안드로이드 ScrollView (0) | 2022.06.02 |
안드로이드 SeekBar (0) | 2022.06.02 |
안드로이드 ProgressBar (0) | 2022.06.02 |
안드로이드 Chip (0) | 2022.05.31 |