본문 바로가기
안드로이드/Widget

안드로이드 RatingBar

by 김어찐 2022. 6. 2.
728x90

별 점을 조절할 수 있는 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("코드에 의해 설정")
                    }
                }
            }
        }
    }

}

 

 

728x90

'안드로이드 > 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