개요

레이팅바(RatingBar)는 사용자가 별점을 줄 수 있는 UI 요소로, 주로 앱 평가나 리뷰에서 자주 사용됩니다.
별점의 범위는 개발자가 설정할 수 있으며, RatingBar는 사용자 입력에 따라 별점을 표시하고 값을 처리할 수 있습니다.

예제 코드

package com.example.ratingbarexample

import android.os.Bundle
import android.widget.RatingBar
import androidx.appcompat.app.AppCompatActivity
import com.example.ratingbarexample.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // View Binding 초기화
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // RatingBar의 값이 변경될 때마다 호출되는 리스너 설정
        binding.ratingBar.setOnRatingBarChangeListener { ratingBar, rating, fromUser ->
            if (fromUser) {
                binding.ratingTextView.text = "현재 별점: $rating"
            }
        }

        // 버튼을 눌렀을 때 현재 별점 출력
        binding.submitButton.setOnClickListener {
            val rating = binding.ratingBar.rating
            binding.ratingTextView.text = "제출한 별점: $rating"
        }
    }
}

설명

  • RatingBar에 리스너 설정
    • ratingBar: 현재 별점을 가진 RatingBar 객체입니다.
    • rating: 사용자가 설정한 별점 값입니다.
    • fromUser: 사용자가 직접 별점을 조정한 경우 true, 코드나 시스템에 의해 변경된 경우 false입니다. 사용자에 의해 변경된 경우에만 별점을 표시하기 위해 fromUser 조건을 사용합니다.

추가적인 속성

  • numStars:
    • 별의 총 개수를 설정합니다. 기본 값은 5입니다.
    • 예: android:numStars="5"
  • stepSize:
    • 별점의 증가 단위를 설정할 수 있습니다. 예를 들어, 0.5씩 또는 1씩 증가하도록 할 수 있습니다.
    • 예: android:stepSize="0.5"
  • rating:
    • 현재 RatingBar의 초기 별점을 설정할 수 있습니다.
    • 예: android:rating="3.5"
  • isIndicator:
    • 이 속성을 true로 설정하면 RatingBar가 사용자의 입력을 받지 않고, 별점이 고정된 상태로 표시됩니다. 주로 평가를 보여줄 때 사용됩니다.
    • 예: android:isIndicator="true"