관리 메뉴

나만을 위한 블로그

[Android] 커스텀 별점(RatingBar) 사용하기 본문

Android

[Android] 커스텀 별점(RatingBar) 사용하기

참깨빵위에참깨빵_ 2021. 6. 6. 17:54
728x90
반응형

안드로이드 스튜디오에서 기본으로 제공하는 별점 표시 바가 있지만 이것 말고 다른 커스텀 라이브러리를 사용해서 별점 바를 바꾸고 싶을 수 있다.

그 때 써볼만한 것이 아래의 라이브러리인 것 같다.

https://github.com/hedge-hog/RatingBar

 

hedge-hog/RatingBar

ratingbar in android. Contribute to hedge-hog/RatingBar development by creating an account on GitHub.

github.com

 

사용법은 간단하다. 먼저 아래의 의존성 문구를 앱 수준 gradle에 붙여넣는다.

implementation 'com.hedgehog.ratingbar:app:1.1.2'

 

그리고 XML에서 선언해주기만 하면 된다. 아래 코드는 리니어 레이아웃에서 weightSum을 설정하고 layout_weight를 준 상태의 커스텀 별점 바다.

 <com.hedgehog.ratingbar.RatingBar
            android:id="@+id/star_average"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".3"
            app:starImageHeight="18dp"
            app:starImageWidth="21dp"
            android:layout_gravity="bottom"
            hedgehog:clickable="false"
            hedgehog:halfstart="true"
            hedgehog:starCount="5"
            hedgehog:starEmpty="@drawable/ic_star_empty"
            hedgehog:starFill="@drawable/ic_star_fill"
            hedgehog:starHalf="@drawable/star_half2" />

이렇게 선언하면 hedgehog 부분이 붉게 표시되면서 뭘 추가하라고 나오는데, 이 부분이 중요하다.

부모 레이아웃의 속성으로 아래의 문구가 추가되어있는지 꼭 확인하자.

xmlns:hedgehog="http://schemas.android.com/apk/res-auto"

res-auto가 아니라 tools로 되어 있을 수가 있다. tools로 되어 있다면 죽었다 깨어나도 별점이 표시되지 않으니 주의하자.

XML에서 하드코딩하는 것만으로는 당연히 부족할 수 있다. 서버라던가 다른 파일에서 JSON 값을 받아와 리사이클러뷰에 표시해야 하는 경우 어댑터에서 이렇게 할 수 있다.

holder.written_review_star.setStar(item.getStar());

onBindViewHolder() 안에서 받아온 별점을 setStar()로 set해주면 된다.

주의할 것은 setStar()는 내가 모델 클래스에 임의로 만들 수 있는 게터세터가 아니다. 그러니 헷갈리지 않게 이름을 지어두면 나중에 수월할지도 모르겠다.

참고로 setStar()의 원형은 setStar(float starCount)이므로 메서드 매개변수는 float로 넘겨야 한다. 다른 자료형인 경우 parseXXX()를 써서 변환해도 문제없다.

반응형
Comments